DataGridView.CellValueChanged 事件     
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
单元格的值更改时发生。
public:
 event System::Windows::Forms::DataGridViewCellEventHandler ^ CellValueChanged;public event System.Windows.Forms.DataGridViewCellEventHandler CellValueChanged;public event System.Windows.Forms.DataGridViewCellEventHandler? CellValueChanged;member this.CellValueChanged : System.Windows.Forms.DataGridViewCellEventHandler Public Custom Event CellValueChanged As DataGridViewCellEventHandler 事件类型
示例
下面的代码示例演示如何使用 CellValueChanged 事件更新 的余额列中 DataGridView的值。 此示例是 事件中提供的更大示例的 SelectionChanged 一部分。
private void DataGridView1_CellValueChanged(
    object sender, DataGridViewCellEventArgs e)
{
    // Update the balance column whenever the value of any cell changes.
    UpdateBalance();
}
private void DataGridView1_RowsRemoved(
    object sender, DataGridViewRowsRemovedEventArgs e)
{
    // Update the balance column whenever rows are deleted.
    UpdateBalance();
}
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);
        counter++)
    {
        deposit = 0;
        withdrawal = 0;
        balance = int.Parse(DataGridView1.Rows[counter - 1]
            .Cells["Balance"].Value.ToString());
        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]
                    .Cells["Deposits"].Value.ToString());
            }
        }
        if (DataGridView1.Rows[counter].Cells["Withdrawals"].Value != null)
        {
            if (DataGridView1.Rows[counter]
                .Cells["Withdrawals"].Value.ToString().Length != 0)
            {
                withdrawal = int.Parse(DataGridView1.Rows[counter]
                    .Cells["Withdrawals"].Value.ToString());
            }
        }
        DataGridView1.Rows[counter].Cells["Balance"].Value =
            (balance + deposit + withdrawal).ToString();
    }
}
Private Sub CellValueChanged(ByVal sender As Object, _
    ByVal e As DataGridViewCellEventArgs) _
    Handles DataGridView1.CellValueChanged
    ' Update the balance column whenever the values of any cell changes.
    UpdateBalance()
End Sub
Private Sub RowsRemoved(ByVal sender As Object, _
    ByVal e As DataGridViewRowsRemovedEventArgs) _
    Handles DataGridView1.RowsRemoved
    ' Update the balance column whenever rows are deleted.
    UpdateBalance()
End Sub
Private Sub UpdateBalance()
    Dim counter As Integer
    Dim balance As Integer
    Dim deposit As Integer
    Dim withdrawal As Integer
    ' Iterate through the rows, skipping the Starting Balance Row.
    For counter = 1 To (DataGridView1.Rows.Count - 2)
        deposit = 0
        withdrawal = 0
        balance = Integer.Parse(DataGridView1.Rows(counter - 1) _
            .Cells("Balance").Value.ToString())
        If Not DataGridView1.Rows(counter) _
            .Cells("Deposits").Value Is Nothing Then
            ' Verify that the cell value is not an empty string.
            If Not DataGridView1.Rows(counter) _
                .Cells("Deposits").Value.ToString().Length = 0 Then
                deposit = Integer.Parse(DataGridView1.Rows(counter) _
                    .Cells("Deposits").Value.ToString())
            End If
        End If
        If Not DataGridView1.Rows(counter) _
            .Cells("Withdrawals").Value Is Nothing Then
            If Not DataGridView1.Rows(counter) _
                .Cells("Withdrawals").Value.ToString().Length = 0 Then
                withdrawal = Integer.Parse(DataGridView1.Rows(counter) _
                    .Cells("Withdrawals").Value.ToString())
            End If
        End If
        DataGridView1.Rows(counter).Cells("Balance").Value = _
            (balance + deposit + withdrawal).ToString()
    Next
End Sub
注解
提交 DataGridView.CellValueChanged 用户指定的值时发生该事件,这通常在焦点离开单元格时发生。
但是,对于检查框单元格,通常需要立即处理更改。 若要在单击单元格时提交更改,必须处理 DataGridView.CurrentCellDirtyStateChanged 事件。 在处理程序中,如果当前单元格是复选框单元格,请调用 DataGridView.CommitEdit 方法并传入 Commit 值。
更改单元格值时,控件中的行不会自动排序。 若要在用户修改单元格时对控件进行排序,请在事件处理程序中CellValueChanged调用 Sort 方法。
有关如何处理事件的详细信息,请参阅 处理和引发事件。