我想取消数据gridview单元格点击事件
private void gridViewHistory_CellClick(object sender, DataGridViewCellEventArgs e)
{
}
但是这个eventargs没有取消事件,如何取消该事件? 也许这个问题有一个非常简单的答案,但我仍然陷入困境,需要帮助。
提前致谢。
你不能。
WinForms 事件只是多播委托,因此它们无法被取消(在停止事件传播的意义上),除非这种情况由公开事件的对象处理(但我不知道有任何对象支持这个,通常事件是通知)。
也就是说,某些事件具有带有
Cancel
属性的参数,对象使用它来取消因该事件而应执行的操作。同样,如果实现不提供该属性,则您无法执行任何操作来更改此行为。
在您的情况下,您应该重写
OnCellClick
的 DataGridView
方法,以您喜欢的方式处理该问题(如果您不调用基类,则单元格将不会获得单击事件,并且 CellClick
事件也不会被解雇)。
并非所有活动都可以取消。您可以选择不在事件处理程序中执行任何操作,但这并不意味着您可以取消它。
因此,除非有特定的
Cancel
类型方法,否则您无法取消事件。
您可能想使用
CellValidating
事件:
private void gridViewHistory_CellValidating(object sender,
DataGridViewCellValidatingEventArgs e)
{
if (.....)
{
e.Cancel = true;
}
}
你可以尝试
返回;
声明,但这仅适用于 asp:LinkButton OnClick 事件,这些事件随后不会传递给其他发布事件,例如 UpdateCommand。