CellValueChanged Event
Collapse the table of content
Expand the table of content

DataGridView.CellValueChanged Event


Occurs when the value of a cell changes.

Namespace:   System.Windows.Forms
Assembly:  System.Windows.Forms (in System.Windows.Forms.dll)

public event DataGridViewCellEventHandler CellValueChanged

The DataGridView.CellValueChanged event occurs when the user-specified value is committed, which typically occurs when focus leaves the cell.

In the case of check box cells, however, you will typically want to handle the change immediately. To commit the change when the cell is clicked, you must handle the DataGridView.CurrentCellDirtyStateChanged event. In the handler, if the current cell is a check box cell, call the DataGridView.CommitEdit method and pass in the Commit value.

Rows in the control are not automatically sorted when a cell value is changed. To sort the control when the user modifies a cell, call the Sort method in a CellValueChanged event handler.

For more information about handling events, see NIB: Consuming Events.

The following code example demonstrates how to use the CellValueChanged event to update the values in a balance column of a DataGridView. This example is part of a larger example available in the SelectionChanged event.

private void DataGridView1_CellValueChanged(
    object sender, DataGridViewCellEventArgs e)
    // Update the balance column whenever the value of any cell changes.

private void DataGridView1_RowsRemoved(
    object sender, DataGridViewRowsRemovedEventArgs e)
    // Update the balance column whenever rows are deleted.

private void UpdateBalance()
    int counter;
    int balance;
    int deposit;
    int withdrawal;

    // Iterate through the rows, skipping the Starting Balance row.
    for (counter = 1; counter < (DataGridView1.Rows.Count - 1);
        deposit = 0;
        withdrawal = 0;
        balance = int.Parse(DataGridView1.Rows[counter - 1]

        if (DataGridView1.Rows[counter].Cells["Deposits"].Value != null)
            // Verify that the cell value is not an empty string.
            if (DataGridView1.Rows[counter]
                .Cells["Deposits"].Value.ToString().Length != 0)
                deposit = int.Parse(DataGridView1.Rows[counter]

        if (DataGridView1.Rows[counter].Cells["Withdrawals"].Value != null)
            if (DataGridView1.Rows[counter]
                .Cells["Withdrawals"].Value.ToString().Length != 0)
                withdrawal = int.Parse(DataGridView1.Rows[counter]
        DataGridView1.Rows[counter].Cells["Balance"].Value =
            (balance + deposit + withdrawal).ToString();

.NET Framework
Available since 2.0
Return to top
© 2016 Microsoft