如何在不使用e.Cancel方法的情况下取消活动?

时间:2013-06-28 10:15:07

标签: c# winforms event-handling

我想取消数据gridview单元格点击事件

private void gridViewHistory_CellClick(object sender, DataGridViewCellEventArgs e)
{      
}

但是这个eventargs没有取消事件,如何取消该事件? 可能这个问题有一个非常简单的答案,但我仍然坚持下去,需要帮助。

提前致谢。

4 个答案:

答案 0 :(得分:3)

你不能。

WinForms事件只是多播委托,然后它们无法取消(在停止传播事件的意义上),除非这种情况由暴露事件的对象处理(但我'我现在知道任何支持它的对象,通常是事件通知)。

也就是说,某些事件具有Cancel属性的参数,该对象使用它来取消应该因该事件而执行的操作。同样,如果实现不提供该属性,则无法执行任何操作来更改此行为。

在你的情况下,你应该覆盖OnCellClick DataGridView方法,以你喜欢的方式处理它(如果你没有调用基类,那么单元格将不会获得点击事件和{ {1}}事件不会被触发)。

答案 1 :(得分:1)

并非所有事件都可以取消。您可以选择不在事件处理程序中执行任何操作,但这并不意味着您可以取消它。

因此,除非有特定的Cancel类型方法,否则您无法取消该活动。

答案 2 :(得分:0)

您可能想要使用CellValidating事件:

private void gridViewHistory_CellValidating(object sender,
    DataGridViewCellValidatingEventArgs e)
{
    if (.....)
    {
        e.Cancel = true;
    }
}

答案 3 :(得分:0)

您可以尝试

  

返回;

语句,但这仅适用于asp:LinkBut​​ton OnClick事件,这些事件不会传递给其他事件,例如UpdateCommand。