DataGridView.CommitEdit(DataGridViewDataErrorContexts) メソッド

定義

編集モードを終了せずに、現在のセルの変更をデータ キャッシュにコミットします。

public:
 bool CommitEdit(System::Windows::Forms::DataGridViewDataErrorContexts context);
public bool CommitEdit (System.Windows.Forms.DataGridViewDataErrorContexts context);
member this.CommitEdit : System.Windows.Forms.DataGridViewDataErrorContexts -> bool
Public Function CommitEdit (context As DataGridViewDataErrorContexts) As Boolean

パラメーター

context
DataGridViewDataErrorContexts

エラーが発生する可能性のあるコンテキストを指定する DataGridViewDataErrorContexts 値のビットごとの組み合わせ。

戻り値

変更がコミットされた場合は true。それ以外の場合は false

例外

セル値をコミットできませんでした。また、DataError イベントのハンドラーがないか、ハンドラーが ThrowException プロパティを true に設定しています。

次のコード例では、イベント ハンドラー内で CommitEdit メソッドを CurrentCellDirtyStateChanged 呼び出して、 イベントを CellValueChanged 発生させます。 このコード例は、「方法: Windows フォーム DataGridView コントロールのボタン列のボタンを無効にする」で提供されるより大きな例の一部です。

// This event handler manually raises the CellValueChanged event
// by calling the CommitEdit method.
void dataGridView1_CurrentCellDirtyStateChanged(object sender,
    EventArgs e)
{
    if (dataGridView1.IsCurrentCellDirty)
    {
        dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit);
    }
}

// If a check box cell is clicked, this event handler disables  
// or enables the button in the same row as the clicked cell.
public void dataGridView1_CellValueChanged(object sender,
    DataGridViewCellEventArgs e)
{
    if (dataGridView1.Columns[e.ColumnIndex].Name == "CheckBoxes")
    {
        DataGridViewDisableButtonCell buttonCell =
            (DataGridViewDisableButtonCell)dataGridView1.
            Rows[e.RowIndex].Cells["Buttons"];

        DataGridViewCheckBoxCell checkCell =
            (DataGridViewCheckBoxCell)dataGridView1.
            Rows[e.RowIndex].Cells["CheckBoxes"];
        buttonCell.Enabled = !(Boolean)checkCell.Value;

        dataGridView1.Invalidate();
    }
}
' This event handler manually raises the CellValueChanged event
' by calling the CommitEdit method.
Sub dataGridView1_CurrentCellDirtyStateChanged( _
    ByVal sender As Object, ByVal e As EventArgs) _
    Handles dataGridView1.CurrentCellDirtyStateChanged

    If dataGridView1.IsCurrentCellDirty Then
        dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit)
    End If
End Sub

' If a check box cell is clicked, this event handler disables  
' or enables the button in the same row as the clicked cell.
Public Sub dataGridView1_CellValueChanged(ByVal sender As Object, _
    ByVal e As DataGridViewCellEventArgs) _
    Handles dataGridView1.CellValueChanged

    If dataGridView1.Columns(e.ColumnIndex).Name = "CheckBoxes" Then
        Dim buttonCell As DataGridViewDisableButtonCell = _
            CType(dataGridView1.Rows(e.RowIndex).Cells("Buttons"), _
            DataGridViewDisableButtonCell)

        Dim checkCell As DataGridViewCheckBoxCell = _
            CType(dataGridView1.Rows(e.RowIndex).Cells("CheckBoxes"), _
            DataGridViewCheckBoxCell)
        buttonCell.Enabled = Not CType(checkCell.Value, [Boolean])

        dataGridView1.Invalidate()
    End If
End Sub

注釈

このメソッドは、書式設定されたユーザー指定の値を基になるセル データ型に変換しようとします。 これを行うには、 イベントが CellParsing 発生します。イベントを処理して型変換をカスタマイズできます。 それ以外の場合は、既定の型コンバーターが使用されます。 変換エラーが発生すると、イベントを回避するためにイベントが DataError 処理されない場合、例外が発生する可能性があります。 値が正常に変換されると、その値はデータ ストアにコミットされ、プロパティ値が の場合、データ バインドされていないセルのイベントがVirtualModetrue発生CellValuePushedします。 値が正常にコミットされると、イベントが CellValueChanged 発生します。

適用対象

こちらもご覧ください