サンプルコード
次のコードは、最終行の最後のセルの場合には次のコントロールにフォーカスを移動し、それ以外の場合には次のセルに移動するためのアクションを作成します。
Imports GrapeCity.Win.MultiRow Public Class CustomMoveToNextContorol Implements IAction Public Function CanExecute(ByVal target As GcMultiRow) As Boolean Implements IAction.CanExecute Return True End Function Public ReadOnly Property DisplayName() As String Implements IAction.DisplayName Get Return Me.ToString() End Get End Property Public Sub Execute(ByVal target As GcMultiRow) Implements IAction.Execute Dim isLastRow As Boolean = (target.CurrentCellPosition.RowIndex = target.RowCount - 1) Dim isLastCell As Boolean = (target.CurrentCellPosition.CellIndex = target.Rows(0).Cells.Count - 2) If Not (isLastRow And isLastCell) Then ' 最後のセル以外のセルでは次のセルへ移動します。 SelectionActions.MoveToNextCell.Execute(target) Else ' 最後のセルでは次のコントロールへ移動します。 ComponentActions.SelectNextControl.Execute(target) End If End Sub End Class
using System; using GrapeCity.Win.MultiRow; public class CustomMoveToNextContorol : IAction { public bool CanExecute(GcMultiRow target) { return true; } public string DisplayName { get { return this.ToString(); } } public void Execute(GcMultiRow target) { Boolean isLastRow = (target.CurrentCellPosition.RowIndex == target.RowCount - 1); Boolean isLastCell = (target.CurrentCellPosition.CellIndex == target.Template.Row.Cells.Count - 2); if (!(isLastRow & isLastCell)) { // 最後のセル以外のセルでは次のセルへ移動します。 SelectionActions.MoveToNextCell.Execute(target); } else { // 最後のセルでは次のコントロールへ移動します。 ComponentActions.SelectNextControl.Execute(target); } } }