添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
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() End Sub

当用户 DataGridView.CellValueChanged 指定的值提交时发生该事件,通常在焦点离开单元格时发生。

但是,对于复选框单元格,通常希望立即处理更改。 若要在单击单元格时提交更改,必须处理该 DataGridView.CurrentCellDirtyStateChanged 事件。 在处理程序中,如果当前单元格是复选框单元格,请调用 DataGridView.CommitEdit 该方法并传入 Commit 值。

更改单元格值时,控件中的行不会自动排序。 若要在用户修改单元格时对控件进行排序,请调用 Sort 事件处理程序中的 CellValueChanged 方法。

有关如何处理事件的详细信息,请参阅 处理和引发事件