セルが編集中のときにGcMultiRowコントロールのショートカットキーのアクションを実行するには?
対象製品
MultiRow for Windows Forms 7.0J
詳細
編集用コントロールのKeyDownイベント内で、適当なアクションを実行することで、GcMultiRowコントロールのショートカットキーと同じアクションを実行することができます。
以下のサンプルコードでは、ComboBoxCellが編集状態の場合に、PageUp、PageDownキーでGcMultiRowコントロールのページ移動を行うようにしています。
[Visual Basic]
[C#]
以下のサンプルコードでは、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
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);
}
}
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);
}
}