PowerTools MultiRow for Windows Forms 8.0J
NewCellPosition プロパティ
使用例 

現在のセルの新しい位置を取得または設定します。
構文
Public Property NewCellPosition As CellPosition
public CellPosition NewCellPosition {get; set;}

プロパティ値

現在のセルの新しい位置を示すCellPosition
例外
例外解説
System.InvalidOperationExceptionTemplateがnull 参照 (Visual Basicでは Nothing)です。
System.ArgumentOutOfRangeException指定されたCellPosition.SectionIndex0未満か、セクションの数以上です。
System.ArgumentException

指定されたCellPosition.CellIndexまたはCellPosition.CellNameが、指定されたSection.Cells内に見つかりません。

または

指定されたCellを選択できません。

解説

このプロパティの初期値は、現在のセルのターゲット位置です。

現在のセルのターゲット位置を変更するには、NewCellPositionプロパティの値を設定します。

NewCellPositionが表示領域にない場合は、そのセルが表示領域にスクロールされます。

使用例
次のサンプルコードは、このプロパティを使用して、セルから離れたときに新しいセル位置にリダイレクトする方法を示します。このサンプルを実行するには、フォームを作成し、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
参照

NewCellPositionNeededEventArgs クラス
NewCellPositionNeededEventArgs メンバ

 

 


© 2008-2015 GrapeCity inc. All rights reserved.