簡體   English   中英

如何在不使用e.Cancel方法的情況下取消事件?

[英]How to cancel an event without using e.Cancel method?

我想取消數據網格視圖單元格單擊事件

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

但是此eventargs沒有取消事件,如何取消該事件? 可能這個問題的答案很簡單,但我仍然陷入困境,需要幫助。

提前致謝。

你不能

WinForms事件只是多播委托,因此不能取消它們( 就事件停止傳播而言 ),除非這種情況是由公開事件的對象來處理的(但是我現在知道支持此事件的任何對象,通常事件是通知)。

就是說,某些事件的參數帶有Cancel屬性,對象使用它來取消由於該事件而應執行的操作。 同樣,如果實現不提供該屬性,則您無能為力以更改此行為。

在您的情況下,您應該重寫DataGridViewOnCellClick方法以按照您喜歡的方式進行處理(如果您不調用基類,則單元格將不會獲得click事件,並且不會觸發CellClick事件)。

並非所有事件都可以取消。 您可以選擇在事件處理程序中不執行任何操作,但這並不意味着您可以取消它。

因此,除非有特定的Cancel類型方法,否則您將無法取消該事件。

您可能要使用CellValidating事件:

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

你可以試試

返回;

語句,但這僅適用於asp:LinkBut​​ton OnClick事件,該事件隨后不會傳遞給其他發布事件,例如UpdateCommand。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM