作成日: 2013/07/18 最終更新日: 2013/10/01
文書種別
不具合
状況
修正済み
詳細
フィルターバーを表示している場合、フィルターバー上でセルを移動して発生したRowColChangeイベント内でC1TrueDBGrid.Colプロパティを参照すると、移動先の列インデックスではなく、移動前の列インデックスを返します。
回避方法
バージョン2.0.20132.61315または4.0.20132.61315のアセンブリで修正されました。
または、次の回避方法を使用します。
矢印キーで移動した場合には正しい結果が得られるため、マウス移動を矢印キーの操作に対応させます。
【サンプルコード】
Imports C1.Win.C1TrueDBGrid
Public Class Form1
Private isMouseDown As Boolean = False
Private isRowColChanged As Boolean = False
Private eaRowColChange As RowColChangeEventArgs
Public Sub New()
' この呼び出しはデザイナーで必要です。
InitializeComponent()
' InitializeComponent() 呼び出しの後で初期化を追加します。
InitializeTDBGrid()
End Sub
Private Sub InitializeTDBGrid()
' データの作成
Dim dt As New DataTable("TEST")
dt.Columns.Add("ColumnA", GetType(String))
dt.Columns.Add("ColumnB", GetType(String))
For i As Integer = 0 To 9
dt.Rows.Add(String.Format("A{0}", i), String.Format("B{0}", i))
Next
dt.AcceptChanges()
' TrueDBGridの設定
C1TrueDBGrid1.DataSource = dt
C1TrueDBGrid1.FilterBar = True
End Sub
Private Sub C1TrueDBGrid1_MouseDown(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles C1TrueDBGrid1.MouseDown
isMouseDown = True
End Sub
Private Sub C1TrueDBGrid1_RowColChange(sender As Object, e As C1.Win.C1TrueDBGrid.RowColChangeEventArgs) Handles C1TrueDBGrid1.RowColChange
If isMouseDown Then
isRowColChanged = True
Exit Sub
Else
Call Me.RowColChangeAction()
End If
End Sub
Private Sub C1TrueDBGrid1_MouseUp(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles C1TrueDBGrid1.MouseUp
If isRowColChanged Then
Call Me.RowColChangeAction()
End If
isMouseDown = False
isRowColChanged = False
End Sub
Private Sub RowColChangeAction()
Console.WriteLine("RowColChangeAction: newCol={0} oldCol={1}", C1TrueDBGrid1.Col, eaRowColChange.LastCol)
End Sub
End Class
または、次の回避方法を使用します。
矢印キーで移動した場合には正しい結果が得られるため、マウス移動を矢印キーの操作に対応させます。
【サンプルコード】
Imports C1.Win.C1TrueDBGrid
Public Class Form1
Private isMouseDown As Boolean = False
Private isRowColChanged As Boolean = False
Private eaRowColChange As RowColChangeEventArgs
Public Sub New()
' この呼び出しはデザイナーで必要です。
InitializeComponent()
' InitializeComponent() 呼び出しの後で初期化を追加します。
InitializeTDBGrid()
End Sub
Private Sub InitializeTDBGrid()
' データの作成
Dim dt As New DataTable("TEST")
dt.Columns.Add("ColumnA", GetType(String))
dt.Columns.Add("ColumnB", GetType(String))
For i As Integer = 0 To 9
dt.Rows.Add(String.Format("A{0}", i), String.Format("B{0}", i))
Next
dt.AcceptChanges()
' TrueDBGridの設定
C1TrueDBGrid1.DataSource = dt
C1TrueDBGrid1.FilterBar = True
End Sub
Private Sub C1TrueDBGrid1_MouseDown(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles C1TrueDBGrid1.MouseDown
isMouseDown = True
End Sub
Private Sub C1TrueDBGrid1_RowColChange(sender As Object, e As C1.Win.C1TrueDBGrid.RowColChangeEventArgs) Handles C1TrueDBGrid1.RowColChange
If isMouseDown Then
isRowColChanged = True
Exit Sub
Else
Call Me.RowColChangeAction()
End If
End Sub
Private Sub C1TrueDBGrid1_MouseUp(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles C1TrueDBGrid1.MouseUp
If isRowColChanged Then
Call Me.RowColChangeAction()
End If
isMouseDown = False
isRowColChanged = False
End Sub
Private Sub RowColChangeAction()
Console.WriteLine("RowColChangeAction: newCol={0} oldCol={1}", C1TrueDBGrid1.Col, eaRowColChange.LastCol)
End Sub
End Class
旧文書番号
80308