我在我的WinForms应用程序中使用DataGridView。我的主要目标是使Enter键不移动到网格中的下一行。我仍然希望回车键验证并结束编辑模式。我可以让DataGridView.EndEdit触发CellValidating事件吗?
我发现this FAQ entry和子类DataGridView重写ProcessDialogKey()。如果按下的键是Enter,我调用EndEdit(),否则我调用base.ProcessDialogKey()。
它的效果很好,除了CellValidating事件没有被触发。
目前,我只是在我调用EndEdit之前手动调用我的验证逻辑,但似乎我失去了一些东西。
我想我可以打电话给OnCellValidating,但后来我担心我错过了其他一些事件。我真正想要的是EndEdit()的某种风格,就像在添加禁用的网格的最后一行上按Enter键一样。
不幸的是,EventArgs类的CellValidating事件不具有公共构造函数。 – 2009-05-05 17:04:59
无论如何,你可以使用反射来访问构造函数,但在单元测试之外看起来相当粗糙。 – 2014-02-07 13:58:06