作成日: 2023/08/08 最終更新日: 2023/08/08
文書種別
使用方法
詳細
KeyActionTabプロパティには左のセルに移動する(戻る)オプションは含まれておりません。 代替方法として、KeyDownEditイベントを使用し、手動でC1FlexGridのRowプロパティを変更することで左のセルに移動する手段が考えられます。

以下に簡単なサンプルコードを記載します。
◎サンプルコード(VB)
以下に簡単なサンプルコードを記載します。
◎サンプルコード(VB)
Imports C1.Win.C1FlexGrid
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' データの設定
Dim dt As DataTable = New DataTable("TEST")
dt.Columns.Add("ColumnA", GetType(Int32))
dt.Columns.Add("ColumnB", GetType(String))
dt.Columns.Add("ColumnC", GetType(String))
dt.Columns.Add("ColumnD", GetType(String))
Dim i As Integer = 0
For i = 0 To 9
dt.Rows.Add(i, String.Format("B{0}", i), String.Format("C{0}", i), String.Format("D{0}", i))
Next
dt.AcceptChanges()
C1FlexGrid1.DataSource = dt
' Tabキーで右のセルに移動
C1FlexGrid1.KeyActionTab = KeyActionEnum.MoveAcross
End Sub
Private Sub C1FlexGrid1_KeyDownEdit(sender As Object, e As KeyEditEventArgs) Handles C1FlexGrid1.KeyDownEdit
' Shift+Tabキーで左のセルに移動
If e.KeyCode = Keys.Tab AndAlso e.Shift Then
e.Handled = True
Dim grid = CType(sender, C1FlexGrid)
If grid.Col > grid.Cols.Fixed - 1 Then
grid.Col = grid.Col - 1
End If
End If
End Sub
End Class
◎サンプルコード(C#)
using C1.Win.C1FlexGrid;
namespace prj_C1FlexGrid
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
// データの設定
DataTable dt = new DataTable("TEST");
dt.Columns.Add("ColumnA", typeof(Int32));
dt.Columns.Add("ColumnB", typeof(String));
dt.Columns.Add("ColumnC", typeof(String));
dt.Columns.Add("ColumnD", typeof(String));
for (int i = 0; i < 10; i++)
{
dt.Rows.Add(i, string.Format("B{0}", i), string.Format("C{0}", i), string.Format("D{0}", i));
}
dt.AcceptChanges();
c1FlexGrid1.DataSource = dt;
// Tabキーで右のセルに移動
c1FlexGrid1.KeyActionTab = KeyActionEnum.MoveAcross;
}
private void c1FlexGrid1_KeyDownEdit(object sender, KeyEditEventArgs e)
{
// Shift+Tabキーで左のセルに移動
if (e.KeyCode == Keys.Tab && e.Shift)
{
e.Handled = true;
var grid = (C1FlexGrid)sender;
if (grid.Col > grid.Cols.Fixed - 1)
{
grid.Col--;
}
}
}
}
}