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

示例

下面的代码示例在事件处理程序中CurrentCellDirtyStateChanged调用 CommitEdit 方法来引发 CellValueChanged 事件。 此代码示例是 DataGridView 控件中如何:禁用按钮列中的按钮Windows 窗体中提供的更大示例的一部分。

// 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 则转换错误可能会导致异常。 如果成功转换值,则会将其提交到数据存储区,当属性值true为 时,将引发CellValuePushed非数据绑定单元格的事件VirtualMode。 如果成功提交值,则会发生 该 CellValueChanged 事件。

适用于

另请参阅