FlexGrid for WPF
Enterキーで次のセルを選択する
基本操作 > 選択 > Enterキーで次のセルを選択する

Enter キーでセルを移動するには、KeyActionEnter プロパティを変更します。(デフォルト値は MoveDown

たとえば、次のコードでは、MoveAcross に設定してカーソルを右に1列移動します。

 _flex.KeyActionEnter = C1.WPF.FlexGrid.KeyAction.MoveAcross;

なお、最終行・最終列のセルで Enter キーが押された際にグリッドの最初のセルに移動する場合は、別途コードで制御する必要があります。次のコードでは、グリッドをデータソースと連結していることを前提として、Enter キーでフォーカスを移動する方法を示します。

【実行例】

 

移動後イメージ

コードのコピー
Public Class MainWindow
    Public Sub New()
        InitializeComponent()
        _flex.ItemsSource = Product.GetProducts(20)
        _flex.KeyActionEnter = C1.WPF.FlexGrid.KeyAction.MoveAcross
    End Sub
    ' 編集時に最終行・最終列で[Enter]キーを押した際

    ' 最初のセルにフォーカスを移動します
    Private Sub _flex_PreviewKeyDown(sender As Object, e As KeyEventArgs) Handles _flex.PreviewKeyDown
        If e.Key = Key.Enter And _flex.Selection.BottomRow = _flex.Rows.Count - 1 And _flex.Selection.RightColumn = _flex.Columns.Count - 1 Then
            _flex.Select(0, 0, True)
            e.Handled = True
        End If
    End Sub
End Class
コードのコピー
public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        _flex.ItemsSource = Product.GetProducts(20);
        _flex.KeyActionEnter = C1.WPF.FlexGrid.KeyAction.MoveAcross;
        _flex.PreviewKeyDown += _flex_PreviewKeyDown;
    }
    // 編集時に最終行・最終列で[Enter]キーを押した際

    //最初のセルにフォーカスを移動します

    private void _flex_PreviewKeyDown(object sender, KeyEventArgs e)
    {
        if (e.Key == Key.Enter
            && _flex.Selection.BottomRow == _flex.Rows.Count - 1
            && _flex.Selection.RightColumn == _flex.Columns.Count - 1)
        {
            _flex.Select(0, 0, true);
            e.Handled = true;
        }
    }
}

 

 

関連トピック