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回押すと、ESC キーを2回押すことで、行の編集を元に戻すことができます。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.