常時入力モードでCtrl+矢印キーでセルを移動する方法
対象製品
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;
}
}
}
[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;
}
}
}