セルが編集中のときにGcMultiRowコントロールのショートカットキーのアクションを実行するには?

文書番号 : 40612     文書種別 : 使用方法     登録日 : 2017/07/26     最終更新日 : 2017/07/26
文書を印刷する
対象製品
MultiRow for Windows Forms 10.0J
詳細
編集用コントロールのKeyDownイベント内で、適当なアクションを実行することで、GcMultiRowコントロールのショートカットキーと同じアクションを実行することができます。

以下のサンプルコードでは、ComboBoxCellが編集状態の場合に、PageUp、PageDownキーでGcMultiRowコントロールのページ移動を行うようにしています。

[Visual Basic]
Imports GrapeCity.Win.MultiRow

    Private Sub GcMultiRow1_EditingControlShowing(ByVal sender As Object, ByVal e As GrapeCity.Win.MultiRow.EditingControlShowingEventArgs) Handles GcMultiRow1.EditingControlShowing
        If TypeOf e.Control Is ComboBoxEditingControl Then
            ' 編集用コントロールがComboBoxEditingControlの場合、KeyDownイベントを設定します。
            RemoveHandler e.Control.KeyDown, AddressOf editor_KeyDown
            AddHandler e.Control.KeyDown, AddressOf editor_KeyDown
        End If
    End Sub

    Private Sub editor_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs)
        If e.KeyCode = Keys.PageUp Then
            ' 編集用コントロールでPageUpキーが押下された場合
            ' 既定の動作をキャンセルします。
            e.Handled = True
            ' 前のページに移動します。
            SelectionActions.MoveToPreviousPage.Execute(DirectCast(sender, IEditingControl).GcMultiRow)
        ElseIf e.KeyCode = Keys.PageDown Then
            ' 編集用コントロールでPageDownキーが押下された場合
            ' 既定の動作をキャンセルします。
            e.Handled = True
            ' 次のページに移動します。
            SelectionActions.MoveToNextPage.Execute(DirectCast(sender, IEditingControl).GcMultiRow)
        End If
    End Sub

[C#]
using GrapeCity.Win.MultiRow;

    private void gcMultiRow1_EditingControlShowing(object sender, EditingControlShowingEventArgs e)
    {
        if (e.Control is ComboBoxEditingControl)
        {
            // 編集用コントロールがComboBoxEditingControlの場合、KeyDownイベントを設定します。
            e.Control.KeyDown -= new KeyEventHandler(Editor_KeyDown);
            e.Control.KeyDown += new KeyEventHandler(Editor_KeyDown);
        }
    }

    private void Editor_KeyDown(object sender, KeyEventArgs e)
    {
                
        if(e.KeyCode == Keys.PageUp)
        {

            // 編集用コントロールでPageUpキーが押下された場合
            //' 既定の動作をキャンセルします。
            e.Handled = true;

            // 前のページに移動します。
            SelectionActions.MoveToPreviousPage.Execute(((IEditingControl)sender).GcMultiRow);
        }
        else if(e.KeyCode == Keys.PageDown)
        {
            //編集用コントロールでPageDownキーが押下された場合
            // 既定の動作をキャンセルします。
            e.Handled = true;
            
            // 次のページに移動します。
            SelectionActions.MoveToNextPage.Execute(((IEditingControl)sender).GcMultiRow);
        }
    }