DataGridView.CommitEdit(DataGridViewDataErrorContexts) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Confirma los cambios realizados a la celda actual en la caché de datos sin salir del modo de edición.
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
Parámetros
- context
- DataGridViewDataErrorContexts
Combinación bit a bit de los valores de DataGridViewDataErrorContexts que especifica el contexto en el que se puede producir un error.
Devoluciones
Es true
si se confirmaron los cambios; en caso contrario, es false
.
Excepciones
No se pudo confirmar el valor de la celda y no hay ningún controlador para el evento DataError o el controlador ha establecido la propiedad ThrowException en true
.
Ejemplos
En el ejemplo de código siguiente se llama al CommitEdit método dentro de un CurrentCellDirtyStateChanged controlador de eventos para generar el CellValueChanged evento. Este ejemplo de código forma parte de un ejemplo más grande que se proporciona en How to: Disable Buttons in a Button Column (Deshabilitar botones en una columna de botón) en el control DataGridView de Windows Forms.
// 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
Comentarios
Este método intenta convertir el valor con formato especificado por el usuario al tipo de datos de celda subyacente. Para ello, genera el CellParsing evento , que puede controlar para personalizar la conversión de tipos. De lo contrario, se usan convertidores de tipos predeterminados. Los errores de conversión pueden dar lugar a una excepción si el DataError evento no se controla para evitarlo. Si el valor se convierte correctamente, se confirma en el almacén de datos, lo que genera el CellValuePushed evento para celdas no enlazadas a datos cuando el valor de la VirtualMode propiedad es true
. Si el valor se confirma correctamente, se produce el CellValueChanged evento .