常時入力モードでCtrl+矢印キーでセルを移動する方法

文書番号 : 40682     文書種別 : 使用方法     登録日 : 2017/07/26     最終更新日 : 2017/07/26
文書を印刷する
対象製品
MultiRow for Windows Forms 10.0J
詳細
常時入力モードでは、セルが常に編集状態にあるため、既定のショートカットキーを解除して編集用コントロールのKeyDownイベントで実装する必要があります。

[Visual Basic]
Imports GrapeCity.Win.MultiRow

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ' MultiRowの初期設定
        GcMultiRow1.Template = Template.CreateGridTemplate(3)
        GcMultiRow1.RowCount = 5
        GcMultiRow1.EditMode = EditMode.EditOnEnter

        ' ショートカットキーの登録解除
        GcMultiRow1.ShortcutKeyManager.Unregister(Keys.Down Or Keys.Control)
        GcMultiRow1.ShortcutKeyManager.Unregister(Keys.Up Or Keys.Control)
        GcMultiRow1.ShortcutKeyManager.Unregister(Keys.Left Or Keys.Control)
        GcMultiRow1.ShortcutKeyManager.Unregister(Keys.Right Or Keys.Control)

    End Sub

    Private Sub GcMultiRow1_EditingControlShowing(ByVal sender As Object, ByVal e As GrapeCity.Win.MultiRow.EditingControlShowingEventArgs) Handles GcMultiRow1.EditingControlShowing
        ' 編集用コントロールのKeyDownイベントの検出
        RemoveHandler e.Control.KeyDown, AddressOf editor_KeyDown
        AddHandler e.Control.KeyDown, AddressOf editor_KeyDown
    End Sub

    Private Sub editor_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs)
        ' キー操作による動作の実装
        If e.Control Then
            Select Case e.KeyCode
                Case Keys.Down
                    e.SuppressKeyPress = True
                    SelectionActions.MoveDown.Execute(DirectCast(sender, IEditingControl).GcMultiRow)
                Case Keys.Up
                    e.SuppressKeyPress = True
                    SelectionActions.MoveUp.Execute(DirectCast(sender, IEditingControl).GcMultiRow)
                Case Keys.Left
                    e.SuppressKeyPress = True
                    SelectionActions.MoveLeft.Execute(DirectCast(sender, IEditingControl).GcMultiRow)
                Case Keys.Right
                    e.SuppressKeyPress = True
                    SelectionActions.MoveRight.Execute(DirectCast(sender, IEditingControl).GcMultiRow)
            End Select
        End If
    End Sub

[C#]
using GrapeCity.Win.MultiRow;

        private void Form1_Load(object sender, EventArgs e)
        {
            // MultiRowの初期設定
            gcMultiRow1.Template = Template.CreateGridTemplate(3);
            gcMultiRow1.RowCount = 5;
            gcMultiRow1.EditMode = EditMode.EditOnEnter;

            // ショートカットキーの登録解除
            gcMultiRow1.ShortcutKeyManager.Unregister(Keys.Down | Keys.Control);
            gcMultiRow1.ShortcutKeyManager.Unregister(Keys.Up | Keys.Control);
            gcMultiRow1.ShortcutKeyManager.Unregister(Keys.Left | Keys.Control);
            gcMultiRow1.ShortcutKeyManager.Unregister(Keys.Right | Keys.Control);

        }

        private void gcMultiRow1_EditingControlShowing(object sender, EditingControlShowingEventArgs e)
        {
            // 編集用コントロールのKeyDownイベントの検出
            e.Control.KeyDown -= editor_KeyDown;
            e.Control.KeyDown += editor_KeyDown;

        }

        private void editor_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
        {
            // キー操作による動作の実装
            if (e.Control)
            {
                switch (e.KeyCode)
                {
                    case Keys.Down:
                        e.SuppressKeyPress = true;
                        SelectionActions.MoveDown.Execute(((IEditingControl)sender).GcMultiRow);
                        break;
                    case Keys.Up:
                        e.SuppressKeyPress = true;
                        SelectionActions.MoveUp.Execute(((IEditingControl)sender).GcMultiRow);
                        break;
                    case Keys.Left:
                        e.SuppressKeyPress = true;
                        SelectionActions.MoveLeft.Execute(((IEditingControl)sender).GcMultiRow);
                        break;
                    case Keys.Right:
                        e.SuppressKeyPress = true;
                        SelectionActions.MoveRight.Execute(((IEditingControl)sender).GcMultiRow);
                        break;
                }
            }
        }