【发布时间】:2012-01-09 17:03:24
【问题描述】:
每当用户通常在 DataGridView 的 TextBox 列中结束编辑模式时(无论用户是否实际修改了值;但当用户通过按 ESC 取消编辑模式时不需要),我都需要执行一项任务控制。
我尝试了 DataGridView 控件本身和编辑控件的几个事件,但没有一个完全符合我的要求:
DataGridView.CellValidating 和 DataGridView.CellValidated:
只要用户选择另一个单元格,即使该单元格未处于编辑模式,也会触发这些事件。我试图检查CellValidating 事件中的IsCurrentCellDirty 属性。这几乎是我需要的,但 IsCurrentCellDirty 仅在用户实际更改值时设置。但是当用户通常在没有更改任何内容的情况下结束编辑模式时,我还需要执行该任务。当用户取消编辑模式时不会触发这些事件,这很好。
DataGridView.CellValueChanged
这个事件也经常被触发(当单元格的值被编程设置时它也会被触发)。
DataGridView.CellEndEdit
这个活动几乎是我想要的。但是当用户通过按 ESC 取消编辑模式时也会触发它。有没有办法检查 CellEndEdit 事件中是否取消了编辑模式?
DataGridView.CellParsing
这个活动几乎是我想要的。但是当用户结束编辑模式而没有更改任何内容时,它不会被触发。
编辑控件的Validating和Validated事件
我在DataGridView.EditingControlShowing 事件中注册了这些事件。它们几乎可以满足我的要求,但是当用户通过按 ESC 取消编辑模式时它们也会被触发。有没有办法检查这些事件中是否取消了编辑模式?
关于我可以注册的事件和/或我可以检查以实现所需行为的标志的任何其他建议?
【问题讨论】:
标签: c# events datagridview datagridviewtextboxcell