GrapeCity.Win.MultiRow.v80 アセンブリ > GrapeCity.Win.MultiRow 名前空間 > GcMultiRow クラス : NewCellPositionNeeded イベント |
Public Event NewCellPositionNeeded As EventHandler(Of NewCellPositionNeededEventArgs)
public event EventHandler<NewCellPositionNeededEventArgs> NewCellPositionNeeded
イベント ハンドラが、このイベントに関連するデータを含む、NewCellPositionNeededEventArgs 型の引数を受け取りました。次の NewCellPositionNeededEventArgs プロパティには、このイベントの固有の情報が記載されます。
プロパティ | 解説 |
---|---|
CellIndex | 親Section内でのセルのインデックスを取得します。 GrapeCity.Win.MultiRow.CellEventArgsから継承されます。 |
CellName | セルの名前を取得します。 GrapeCity.Win.MultiRow.CellEventArgsから継承されます。 |
MoveStatus | NewCellPositionNeeded イベントを発生させた動作を示すステータスを取得します。 |
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イベントは発生しません。
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