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