PowerTools MultiRow for Windows Forms 8.0J
NewCellPositionNeeded イベント
使用例 

CurrentCellが新しい位置に移動するときに発生します。
構文
Public Event NewCellPositionNeeded As EventHandler(Of NewCellPositionNeededEventArgs)
public event EventHandler<NewCellPositionNeededEventArgs> NewCellPositionNeeded
イベント データ

イベント ハンドラが、このイベントに関連するデータを含む、NewCellPositionNeededEventArgs 型の引数を受け取りました。次の NewCellPositionNeededEventArgs プロパティには、このイベントの固有の情報が記載されます。

プロパティ解説
CellIndexSection内でのセルのインデックスを取得します。 GrapeCity.Win.MultiRow.CellEventArgsから継承されます。
CellNameセルの名前を取得します。 GrapeCity.Win.MultiRow.CellEventArgsから継承されます。
MoveStatusNewCellPositionNeeded イベントを発生させた動作を示すステータスを取得します。  
NewCellPosition現在のセルの新しい位置を取得または設定します。  
RowIndexイベントが発生したオーナーRowのインデックスを取得します。 GrapeCity.Win.MultiRow.CellEventArgsから継承されます。
Scopeイベントが発生したセルの領域を取得します。 GrapeCity.Win.MultiRow.CellEventArgsから継承されます。
SectionIndexイベントが発生したオーナーSectionのインデックスを取得します。 GrapeCity.Win.MultiRow.CellEventArgsから継承されます。
解説

NewCellPositionNeededイベントを使用すると、セルから離れて別のセルに入るときに新しいセル位置にリダイレクトできます。

NewCellPositionNeededイベントは、GcMultRowのCurrentCellPositionが有効なCellPositionから新しい有効なCellPositionに変更されるときに発生します。イベントの発生順序は、NewCellPositionNeeded、CellLeave、RowLeave、CellValidating...の順です。

NewCellPositionNeededは、キーボード操作またはマウス操作によってのみ発生します。CurrentCellPositionプロパティまたはCurrentCellプロパティの値をコードで変更した場合、NewCellPositionNeededイベントは発生しません。

使用例
次のサンプルコードは、このイベントを使用して、セルから離れたときに新しいセル位置にリダイレクトする方法を示します。このサンプルを実行するには、フォームを作成し、GcMultiRowコントロールをそのフォームに追加します。次に、NewCellPositionNeededイベントのイベントハンドラを追加して、次のコードをイベントハンドラにコピーします。使用するテンプレートには2つのセルが含まれていて、それぞれの名前が"State"と"Description"である必要があります。
void gcMultiRow1_NewCellPositionNeeded(object sender, NewCellPositionNeededEventArgs e)
{
    // When user try to switch current cell to another row.
    // Control will check the 'State' is 'Delay' or not. If the 'State' is 'Delay' and 
    // user didn't fill out any description, the current cell will change to 'Description' cell
    // in the same section, and pop up a message box to notify user fill out this cell.
    if (e.SectionIndex != e.NewCellPosition.SectionIndex)
    {
        object projectState = gcMultiRow1[e.SectionIndex,"State"].Value;
        object description = gcMultiRow1[e.SectionIndex, "Description"].Value;
        if (description == null || object.Equals(string.Empty, description))
        {
            if(object.Equals(projectState, "Delay"))
            {
                MessageBox.Show("If project state is delay, you should fill out some description.");

                e.NewCellPosition = new CellPosition(e.SectionIndex, "Description");
            }
        }

    }
}
Private Sub gcMultiRow1_NewCellPositionNeeded(ByVal sender As Object, ByVal e As NewCellPositionNeededEventArgs) Handles gcMultiRow1.NewCellPositionNeeded
    ' When user try to switch current cell to another row.
    ' Control will check the 'State' is 'Delay' or not. If the 'State' is 'Delay' and 
    ' user didn't fill out any description, the current cell will change to 'Description' cell
    ' in the same section, and pop up a message box to notify user fill out this cell.
    If e.SectionIndex <> e.NewCellPosition.SectionIndex Then
        Dim projectState As Object = gcMultiRow1(e.SectionIndex, "State").Value
        Dim description As Object = gcMultiRow1(e.SectionIndex, "Description").Value
        If description = Nothing OrElse Object.Equals(String.Empty, description) Then
            If Object.Equals(projectState, "Delay") Then
                MessageBox.Show("If project state is delay, you should fill out some description.")

                e.NewCellPosition = New CellPosition(e.SectionIndex, "Description")
            End If

        End If
    End If
End Sub
参照

GcMultiRow クラス
GcMultiRow メンバ

 

 


© 2008-2015 GrapeCity inc. All rights reserved.