Поделиться через


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 Forms 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 , если событие не обрабатывается, чтобы предотвратить его. Если значение успешно преобразовано, оно фиксируется в хранилище данных, вызывая CellValuePushed событие для ячеек, не связанных с данными VirtualMode , если свойство имеет trueзначение . Если значение успешно зафиксировано, CellValueChanged происходит событие .

Применяется к

См. также раздел