IActionインタフェースの基本実装を提供し、
GcMultiRowのすべてのアクションの基本ロジックを実装します。このクラスは抽象 (Visual Basicでは
MustInherit)クラスなので、インスタンス化できません。
次のサンプルコードは、GcMultiRowコントロールのショートカットキー設定を管理する方法を示します。ここでは、キーのアクションを変更する方法と、独自のアクションをカスタマイズする方法を示しています。このサンプルコードは、
GcMultiRow.ShortcutKeyManagerプロパティに示されている詳細なコード例の一部を抜粋したものです。
void Form1_Load(object sender, EventArgs e)
{
gcMultiRow1.Template = Template.Default;
gcMultiRow1.RowCount = 5;
// Register another action to a existent key. Unregister old key first.
this.gcMultiRow1.ShortcutKeyManager.Unregister(Keys.Enter);
// Register to new action.
this.gcMultiRow1.ShortcutKeyManager.Register(new EditThenMoveNextAction(), Keys.Enter);
// Register an action list. Select all first, and then, copy.
this.gcMultiRow1.ShortcutKeyManager.Register(new ActionList(SelectionActions.SelectAll, EditingActions.Copy), Keys.Control | Keys.Shift | Keys.C);
}
class EditThenMoveNextAction : Action
{
public override bool CanExecute(GcMultiRow target)
{
return true;
}
protected override void OnExecute(GcMultiRow target)
{
if (target.IsCurrentCellInEditMode == false && EditingActions.BeginEdit.CanExecute(target))
{
EditingActions.BeginEdit.Execute(target);
}
else
{
SelectionActions.MoveToNextCell.Execute(target);
}
}
}
Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
gcMultiRow1.Template = Template.Default
gcMultiRow1.RowCount = 5
' Register another action to a existent key. Unregister old key first.
Me.gcMultiRow1.ShortcutKeyManager.Unregister(Keys.Enter)
' Register to new action.
Me.gcMultiRow1.ShortcutKeyManager.Register(New EditThenMoveNextAction(), Keys.Enter)
' Register an action list. Select all first, and then, copy.
Me.gcMultiRow1.ShortcutKeyManager.Register(New ActionList(SelectionActions.SelectAll, EditingActions.Copy), Keys.Control Or Keys.Shift Or Keys.C)
End Sub
Private Class EditThenMoveNextAction
Inherits Action
Public Overloads Overrides Function CanExecute(ByVal target As GcMultiRow) As Boolean
Return True
End Function
Protected Overloads Overrides Sub OnExecute(ByVal target As GcMultiRow)
If target.IsCurrentCellInEditMode = False AndAlso EditingActions.BeginEdit.CanExecute(target) Then
EditingActions.BeginEdit.Execute(target)
Else
SelectionActions.MoveToNextCell.Execute(target)
End If
End Sub
End Class
System.Object
GrapeCity.Win.MultiRow.Action