作成日: 2016/03/30 最終更新日: 2016/05/18
文書種別
不具合
状況
修正済み
詳細
MarqueeStyleをFloatingEditorに、TabActionをColumnNavigationに設定した場合、TabキーまたはShift+Tabキーによってセルを移動した直後にEnterキーを押下しても、右のセルへ移動しません。
回避方法
この問題はバージョン2.0.20161.147または4.0.20161.147で修正されました。
修正版の適用方法については、アップデートの方法を参照してください。
修正版を適用しない場合の回避方法は次の通りです。
TabActionプロパティをControlNavigationに設定した上で、編集コントロールのKeyDownイベントでセル移動を実装します。
◎サンプルコード(VB)
◎サンプルコード(C#)
修正版の適用方法については、アップデートの方法を参照してください。
修正版を適用しない場合の回避方法は次の通りです。
TabActionプロパティをControlNavigationに設定した上で、編集コントロールのKeyDownイベントでセル移動を実装します。
◎サンプルコード(VB)
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
' データの作成
Dim dt As New DataTable("Test")
dt.Columns.Add("ColumnA", GetType(String))
dt.Columns.Add("ColumnB", GetType(String))
dt.Columns.Add("ColumnC", GetType(String))
For i As Integer = 0 To 9
dt.Rows.Add(String.Format("A{0}", i), String.Format("B{0}", i), String.Format("C{0}", i))
Next
dt.AcceptChanges()
' TrueDBGridの設定
C1TrueDBGrid1.DataSource = dt
C1TrueDBGrid1.MarqueeStyle = MarqueeEnum.FloatingEditor
C1TrueDBGrid1.DirectionAfterEnter = DirectionAfterEnterEnum.MoveRight
C1TrueDBGrid1.TabAction = TabActionEnum.ControlNavigation
End Sub
Private Sub C1TrueDBGrid1_ControlAdded(sender As Object, e As System.Windows.Forms.ControlEventArgs) Handles C1TrueDBGrid1.ControlAdded
If e.Control.GetType().BaseType.BaseType Is GetType(TextBox) Then
AddHandler e.Control.KeyDown, AddressOf editor_KeyDown
End If
End Sub
Private Sub editor_KeyDown(sender As Object, e As KeyEventArgs)
If e.KeyCode = Keys.Tab Then
e.SuppressKeyPress = True
If e.Modifiers = Keys.Shift Then
C1TrueDBGrid1.Col -= 1
Else
C1TrueDBGrid1.Col += 1
End If
End If
End Sub
◎サンプルコード(C#)
private void Form1_Load(System.Object sender, System.EventArgs e)
{
// データの作成
DataTable dt = new DataTable("Test");
dt.Columns.Add("ColumnA", typeof(string));
dt.Columns.Add("ColumnB", typeof(string));
dt.Columns.Add("ColumnC", typeof(string));
for (int i = 0; i <= 9; i++) {
dt.Rows.Add(string.Format("A{0}", i), string.Format("B{0}", i), string.Format("C{0}", i));
}
dt.AcceptChanges();
// TrueDBGridの設定
C1TrueDBGrid1.DataSource = dt;
C1TrueDBGrid1.MarqueeStyle = MarqueeEnum.FloatingEditor;
C1TrueDBGrid1.DirectionAfterEnter = DirectionAfterEnterEnum.MoveRight;
C1TrueDBGrid1.TabAction = TabActionEnum.ControlNavigation;
}
private void C1TrueDBGrid1_ControlAdded(object sender, System.Windows.Forms.ControlEventArgs e)
{
if (object.ReferenceEquals(e.Control.GetType().BaseType.BaseType, typeof(TextBox)))
{
e.Control.KeyDown += editor_KeyDown;
}
}
private void editor_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Tab)
{
e.SuppressKeyPress = true;
if (e.Modifiers == Keys.Shift)
{
C1TrueDBGrid1.Col -= 1;
}
else
{
C1TrueDBGrid1.Col += 1;
}
}
}
旧文書番号
81604