c# - 如何检测 DataGridView CheckBox 事件变化?

标签 c# winforms datagridview

我有一个 winforms 应用程序,想在选中/取消选中 DataGridView 控件中嵌入的复选框时触发一些代码。我尝试过的每个事件要么

  1. CheckBox 被点击但在其选中状态改变之前触发,或者
  2. 仅在 CheckBox 失去焦点时触发

我似乎找不到在选中状态更改后立即触发的事件。


编辑:

我想要实现的是,当一个 DataGridView 中的 CheckBox 的选中状态发生变化时,另外两个 DataGridView 中的数据变化。然而,在我使用的所有事件中,其他网格中的数据仅在第一个 DataGridView 中的 CheckBox 失去焦点后发生变化。

最佳答案

要处理 DatGridViewCheckedChanged 事件,您必须首先让 CellContentClick 触发(它没有 CheckBoxes 当前状态!)然后调用 CommitEdit。这将依次触发 CellValueChanged 事件,您可以使用它来完成您的工作。 这是 Microsoft 的疏忽。做一些类似下面的事情......

private void dataGridViewSites_CellContentClick(object sender, 
    DataGridViewCellEventArgs e)
{
    dataGridViewSites.CommitEdit(DataGridViewDataErrorContexts.Commit);
}

/// <summary>
/// Works with the above.
/// </summary>
private void dataGridViewSites_CellValueChanged(object sender, 
    DataGridViewCellEventArgs e)
{
    UpdateDataGridViewSite();
}

希望对您有所帮助。

附言查看这篇文章https://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.currentcelldirtystatechanged(v=vs.110).aspx

关于c# - 如何检测 DataGridView CheckBox 事件变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11843488/

相关文章:

c# - 动态对象智能感知

vb.net - 排序 DataGridView 图像列

c# - 为什么要在窗体上放置标准对话框?

c# - 如何在更改 SelectedIndex 时让 ComboBox.SelectedItem 绑定(bind)?

c# - Windows 窗体 - 奇怪的自动滚动行为

c# - 使用 DataGridViewRow.DataBoundItem - 转换为可枚举对象?

c# - 将焦点设置到 datagridview 中新插入或更新的一行?

c# - 如何在 C# 中读取和编辑 .txt 文件?

c# - 使用 PostBackOptions.TrackFocus 在回发中保持控制焦点

c# - 混契约(Contract)步和异步套接字调用