常時入力モードでCtrl+矢印キーでセルを移動する方法
対象製品
MultiRow for Windows Forms 10.0J
詳細
常時入力モードでは、セルが常に編集状態にあるため、既定のショートカットキーを解除して編集用コントロールのKeyDownイベントで実装する必要があります。
[Visual Basic]
[C#]
[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; } } }