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

文書番号 : 34479     文書種別 : 使用方法     登録日 : 2012/11/21     最終更新日 : 2012/11/21
文書を印刷する
対象製品
MultiRow for Windows Forms 7.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);
    }
  }
関連情報