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

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