我有一个DataGridView
并且我检测到按下回车键以确认/提交单元格的值。我在ProcessCmdKey
中检测到了这个密钥,但我知道存在另一个名为ProcessDialogKey
的类似方法,这是它们之间的区别吗?如果我使用ProcessCmdKey
检测输入, Tab 和 Esc 键而不是使用ProcessDialogKey
会怎样?
另外,我在我的应用程序中遇到一些问题,我已将删除键与删除树winforms组件中当前所选项目相关联,但当我处于DataGridView
中的编辑模式时会引发此事件s单元格,然后按删除键。因此,如果DataGridView
的单元格当前处于编辑模式并且用户按下删除键以避免引发删除树中所选项目的事件,我希望处理此密钥。那么如何实现呢?我可以使用ProcessCmdKey
来检测删除密钥,如果是,请使用它吗?它应该有用吗?
答案 0 :(得分:1)
要验证DataGridView
中的行,您应该使用RowValidating
事件,这样可以避免ProcessCmdKey
中的所有怪癖。如果您使用鼠标,向上/向下箭头或向上/向下翻页离开行,它也会进行验证。
关于TreeView
,您最好使用KeyDown
事件。如果没有任何其他步骤,只有在TreeView
得到关注时才会触发。如果你在DataGridView
内工作 - 它不会开火。也就是说, Del 键将在Edit
模式下删除文本,在选择行时删除行,如果坐在单元格上则不执行任何操作。这是有问题的控件的默认行为 - 不需要额外的代码就可以使它像那样工作。
你应该避免覆盖ProcessCmdKey
,除非它不起作用(这种情况很少见)。