DataGridView.RowDirtyStateNeeded DataGridView.RowDirtyStateNeeded DataGridView.RowDirtyStateNeeded DataGridView.RowDirtyStateNeeded Event


DataGridView コントロールの VirtualMode プロパティが true で、DataGridView が現在の行にコミットされていない変更の有無を確認する必要がある場合に発生します。Occurs when the VirtualMode property of the DataGridView control is true and the DataGridView needs to determine whether the current row has uncommitted changes.

 event System::Windows::Forms::QuestionEventHandler ^ RowDirtyStateNeeded;
public event System.Windows.Forms.QuestionEventHandler RowDirtyStateNeeded;
member this.RowDirtyStateNeeded : System.Windows.Forms.QuestionEventHandler 
Public Custom Event RowDirtyStateNeeded As QuestionEventHandler 

次のコード例では、セル レベルのコミットの範囲、つまり、ユーザーが現在のセルのみに変更を戻すことができますを提供するには、このイベントを処理する方法を示します。The following code example demonstrates how to handle this event to provide cell-level commit scope, meaning that the user can revert changes to the current cell only. コミットされていない場合にのみが変更されると、セル レベルのコミットのスコープ内の行が扱われます、現在のセルにコミットされていない変更は、行の任意のセルがある場合ではなくコミットされていない変更します。In cell-level commit scope, the row is treated as having uncommitted changes only when the current cell has uncommitted changes, rather than when any cell in the row has uncommitted changes. この例で使用できる例の一部は、チュートリアル。仮想モードの実装で、Windows フォーム DataGridView コントロールします。This example is part of a larger example available in Walkthrough: Implementing Virtual Mode in the Windows Forms DataGridView Control.

void dataGridView1_RowDirtyStateNeeded( Object^ /*sender*/,
    System::Windows::Forms::QuestionEventArgs^ e )
   if (  !rowScopeCommit )
      // In cell-level commit scope, indicate whether the value
      // of the current cell has been modified.
      e->Response = this->dataGridView1->IsCurrentCellDirty;

private void dataGridView1_RowDirtyStateNeeded(object sender,
    System.Windows.Forms.QuestionEventArgs e)
    if (!rowScopeCommit)
        // In cell-level commit scope, indicate whether the value
        // of the current cell has been modified.
        e.Response = this.dataGridView1.IsCurrentCellDirty;
Private Sub dataGridView1_RowDirtyStateNeeded(ByVal sender As Object, _
    ByVal e As System.Windows.Forms.QuestionEventArgs) _
    Handles dataGridView1.RowDirtyStateNeeded

    If Not rowScopeCommit Then

        ' In cell-level commit scope, indicate whether the value
        ' of the current cell has been modified.
        e.Response = Me.dataGridView1.IsCurrentCellDirty

    End If

End Sub


既定では、このイベントの設定、QuestionEventArgs.Responseプロパティをtrueのどのセルの現在の行が変更された場合。By default, this event sets the QuestionEventArgs.Response property to true if any cells in the current row have been modified. これにより、CancelRowEditイベントが発生する場合、ユーザーは、行の編集を元に戻します。This causes the CancelRowEdit event to occur when the user reverts edits to a row. ユーザーは、セルが編集モードまたは編集モードの外部で 1 回と 2 回、esc キーを押して、行の編集を戻すことができます。Users can revert edits to a row by pressing ESC twice when a cell is in edit mode or once outside of edit mode. このイベントを設定して仮想モードでのコミットのスコープをカスタマイズするため使用できます、QuestionEventArgs.Responseプロパティを選択したコミットの範囲に応じて正しい値にします。This event can be used for customizing commit scope in virtual mode by setting the QuestionEventArgs.Response property to the correct value depending on the chosen commit scope.

イベントを処理する方法の詳細については、次を参照してください。処理とイベントの発生します。For more information about how to handle events, see Handling and Raising Events.