DataGridView - 如何钩入与单元格更改相关联的事件?

3

我正在使用C#.NET中的DataGridView。当用户编辑一列时,我需要同一网格中的另一列随着每次按键/更改而改变。我应该在哪里插入自己的代码来处理这种事件?

1个回答

1
你想要实现的目标在没有一些工作的情况下是不可能的。默认情况下,DataGridView类没有提供CellChanging样式事件。相反,它以CellBeginEditCellEndEdit形式提供了成对的事件。
部分原因可能是由于单元格可以编辑的方式不同。对于文本样式单元格,有一个CellChanging会有意义,但对于例如按钮样式单元格来说则没有那么合适。
不过,你可以很容易地通过上述事件来实现一种解决方案,使其在完全输入值后传播该值。
我能看到的唯一实现每次按键时的方法是:
1. 处理上述事件 2. 找出DataGridView.EditingControl的运行时类型,并找到一种方法来钩入每种类型的单元格的所有更改 3. 在每次编辑时传播更改
即便这样,我认为你仍然可能会遇到问题,因为我不确定DataGridView是否设计为在另一个单元格正在被积极编辑时更改单元格值。

你能想到为什么我使用以下代码后没有任何反应吗?private void dataGridView1_CellEndEdit(object sender, DataGridViewCellCancelEventArgs e) { dataGridView1[3, e.RowIndex].Value = "test"; dataGridView1[0, 0].Value = "another test"; }实际上,当我点击单元格、编辑文本并按下回车键时,既不会影响0,0也不会影响0,X。 - Brandon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接