作成日: 2016/01/08 最終更新日: 2016/05/18
文書種別
不具合
状況
修正済み
詳細
ExtendRightColumnプロパティをTrueに設定するとセル移動やスクロールの速度が低下します。
回避方法
この問題はバージョン2.0.20161.147または4.0.20161.147で修正されました。
修正版の適用方法については、アップデートの方法を参照してください。
修正版を適用しない場合の回避方法は次の通りです。
ExtendRightColumnプロパティをFalseに設定し、右端の列幅を独自に算出して設定します。
◎サンプルコード(Visual Basic)
◎サンプルコード(C#)
修正版の適用方法については、アップデートの方法を参照してください。
修正版を適用しない場合の回避方法は次の通りです。
ExtendRightColumnプロパティをFalseに設定し、右端の列幅を独自に算出して設定します。
◎サンプルコード(Visual Basic)
Public Sub New()
InitializeComponent()
Dim dt As DataTable = New DataTable()
dt.Columns.Add("id", GetType(Integer))
dt.Columns.Add("name", GetType(String))
For i As Integer = 0 To 999
Dim row As DataRow = dt.NewRow()
row("id") = (i + 1).ToString()
row("name") = String.Format("name{0}", i)
dt.Rows.Add(row)
Next
C1TrueDBGrid1.DataSource = dt
C1TrueDBGrid1.ExtendRightColumn = False
UpdateColWidth()
End Sub
Private Sub C1TrueDBGrid1_Scroll(sender As Object, e As C1.Win.C1TrueDBGrid.CancelEventArgs)
UpdateColWidth()
End Sub
Private Sub C1TrueDBGrid1_Resize(sender As Object, e As EventArgs)
UpdateColWidth()
End Sub
Private Sub UpdateColWidth()
Dim vsWidth As Integer = 20
Try
Dim posX As Integer = 0
For colIndex As Integer = C1TrueDBGrid1.Splits(0).LeftCol To C1TrueDBGrid1.Columns.Count - 1
Dim rect = C1TrueDBGrid1.Splits(0).GetCellBounds(C1TrueDBGrid1.Splits(0).FirstRow, colIndex)
If colIndex = C1TrueDBGrid1.Columns.Count - 1 Then
posX = rect.X
Exit For
Else
If rect.X + rect.Width > C1TrueDBGrid1.Width - vsWidth Then
posX = -1
Exit For
End If
End If
Next
If posX > 0 Then
C1TrueDBGrid1.Splits(0).DisplayColumns(C1TrueDBGrid1.Columns.Count - 1).Width =
C1TrueDBGrid1.Width - posX - vsWidth
End If
Catch ex As Exception
End Try
End Sub
InitializeComponent()
Dim dt As DataTable = New DataTable()
dt.Columns.Add("id", GetType(Integer))
dt.Columns.Add("name", GetType(String))
For i As Integer = 0 To 999
Dim row As DataRow = dt.NewRow()
row("id") = (i + 1).ToString()
row("name") = String.Format("name{0}", i)
dt.Rows.Add(row)
Next
C1TrueDBGrid1.DataSource = dt
C1TrueDBGrid1.ExtendRightColumn = False
UpdateColWidth()
End Sub
Private Sub C1TrueDBGrid1_Scroll(sender As Object, e As C1.Win.C1TrueDBGrid.CancelEventArgs)
UpdateColWidth()
End Sub
Private Sub C1TrueDBGrid1_Resize(sender As Object, e As EventArgs)
UpdateColWidth()
End Sub
Private Sub UpdateColWidth()
Dim vsWidth As Integer = 20
Try
Dim posX As Integer = 0
For colIndex As Integer = C1TrueDBGrid1.Splits(0).LeftCol To C1TrueDBGrid1.Columns.Count - 1
Dim rect = C1TrueDBGrid1.Splits(0).GetCellBounds(C1TrueDBGrid1.Splits(0).FirstRow, colIndex)
If colIndex = C1TrueDBGrid1.Columns.Count - 1 Then
posX = rect.X
Exit For
Else
If rect.X + rect.Width > C1TrueDBGrid1.Width - vsWidth Then
posX = -1
Exit For
End If
End If
Next
If posX > 0 Then
C1TrueDBGrid1.Splits(0).DisplayColumns(C1TrueDBGrid1.Columns.Count - 1).Width =
C1TrueDBGrid1.Width - posX - vsWidth
End If
Catch ex As Exception
End Try
End Sub
◎サンプルコード(C#)
public Form1()
{
InitializeComponent();
DataTable dt = new DataTable();
dt.Columns.Add("id", typeof(int));
dt.Columns.Add("name", typeof(string));
for (int i = 0; i < 1000; i++)
{
DataRow row = dt.NewRow();
row["id"] = (i + 1).ToString();
row["name"] = string.Format("name{0}", i);
dt.Rows.Add(row);
}
c1TrueDBGrid1.DataSource = dt;
c1TrueDBGrid1.ExtendRightColumn = false;
UpdateColWidth();
}
private void c1TrueDBGrid1_Scroll(object sender, C1.Win.C1TrueDBGrid.CancelEventArgs e)
{
UpdateColWidth();
}
private void c1TrueDBGrid1_Resize(object sender, EventArgs e)
{
UpdateColWidth();
}
private void UpdateColWidth()
{
int vsWidth = 20;
try
{
int posX = 0;
for (int colIndex = c1TrueDBGrid1.Splits[0].LeftCol; colIndex < c1TrueDBGrid1.Columns.Count; colIndex++)
{
var rect = c1TrueDBGrid1.Splits[0].GetCellBounds(c1TrueDBGrid1.Splits[0].FirstRow, colIndex);
if (colIndex == c1TrueDBGrid1.Columns.Count - 1)
{
posX = rect.X;
break;
}
else
{
if (rect.X + rect.Width > c1TrueDBGrid1.Width - vsWidth)
{
posX = -1;
break;
}
}
}
if (posX > 0)
c1TrueDBGrid1.Splits[0].DisplayColumns[c1TrueDBGrid1.Columns.Count - 1].Width =
c1TrueDBGrid1.Width - posX - vsWidth;
}
catch { }
}
{
InitializeComponent();
DataTable dt = new DataTable();
dt.Columns.Add("id", typeof(int));
dt.Columns.Add("name", typeof(string));
for (int i = 0; i < 1000; i++)
{
DataRow row = dt.NewRow();
row["id"] = (i + 1).ToString();
row["name"] = string.Format("name{0}", i);
dt.Rows.Add(row);
}
c1TrueDBGrid1.DataSource = dt;
c1TrueDBGrid1.ExtendRightColumn = false;
UpdateColWidth();
}
private void c1TrueDBGrid1_Scroll(object sender, C1.Win.C1TrueDBGrid.CancelEventArgs e)
{
UpdateColWidth();
}
private void c1TrueDBGrid1_Resize(object sender, EventArgs e)
{
UpdateColWidth();
}
private void UpdateColWidth()
{
int vsWidth = 20;
try
{
int posX = 0;
for (int colIndex = c1TrueDBGrid1.Splits[0].LeftCol; colIndex < c1TrueDBGrid1.Columns.Count; colIndex++)
{
var rect = c1TrueDBGrid1.Splits[0].GetCellBounds(c1TrueDBGrid1.Splits[0].FirstRow, colIndex);
if (colIndex == c1TrueDBGrid1.Columns.Count - 1)
{
posX = rect.X;
break;
}
else
{
if (rect.X + rect.Width > c1TrueDBGrid1.Width - vsWidth)
{
posX = -1;
break;
}
}
}
if (posX > 0)
c1TrueDBGrid1.Splits[0].DisplayColumns[c1TrueDBGrid1.Columns.Count - 1].Width =
c1TrueDBGrid1.Width - posX - vsWidth;
}
catch { }
}
旧文書番号
81524