【发布时间】:2013-05-26 04:48:05
【问题描述】:
我的应用程序中有一个单列 DataGridView。如果/当用户将它们呈现为空白时(通过编辑单元格),我希望应用程序立即从网格中删除行。问题是我尝试的每一种方法都会陷入死胡同。
实现此行为的最佳方式是什么?我试过了:
- 使用
CellValidated事件,然后检查该值现在是否为空。- 引发“无法执行操作”异常,因为显然 C# 不允许您在
CellValidated事件中从 DataGridView 中删除一行。
- 引发“无法执行操作”异常,因为显然 C# 不允许您在
- 使用
CellEndEdit事件,然后检查该值现在是否为空- 如果结束单元格编辑的事件是用户单击同一网格中的另一个单元格,则当我尝试删除该行时会引发“无法执行操作”异常;否则,这似乎可行。
- 使用
CellValueChanged事件,然后检查该值现在是否为空。- 需要检查网格当前是否正在以编程方式填充,但这只是一种不便。
- 错过了用户开始在新行中输入,然后不进行验证,立即使用 BACKSPACE 删除文本的情况。这会将单元格留空,并且不会触发
CellValueChanged事件。
我认为我不能使用 CellLeave 事件,因为用户可以通过按 ENTER 键锁定一个值而无需离开单元格。
【问题讨论】:
标签: c#