DataGridView.CommitEdit(DataGridViewDataErrorContexts) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
将当前单元格中的更改提交到数据缓存,但不结束编辑模式。
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 事件。