[英]How to cancel an event without using e.Cancel method?
我想取消數據網格視圖單元格單擊事件
private void gridViewHistory_CellClick(object sender, DataGridViewCellEventArgs e)
{
}
但是此eventargs沒有取消事件,如何取消該事件? 可能這個問題的答案很簡單,但我仍然陷入困境,需要幫助。
提前致謝。
你不能
WinForms事件只是多播委托,因此不能取消它們( 就事件的停止傳播而言 ),除非這種情況是由公開事件的對象來處理的(但是我現在知道支持此事件的任何對象,通常事件是通知)。
就是說,某些事件的參數帶有Cancel
屬性,對象使用它來取消由於該事件而應執行的操作。 同樣,如果實現不提供該屬性,則您無能為力以更改此行為。
在您的情況下,您應該重寫DataGridView
的OnCellClick
方法以按照您喜歡的方式進行處理(如果您不調用基類,則單元格將不會獲得click事件,並且不會觸發CellClick
事件)。
並非所有事件都可以取消。 您可以選擇在事件處理程序中不執行任何操作,但這並不意味着您可以取消它。
因此,除非有特定的Cancel
類型方法,否則您將無法取消該事件。
您可能要使用CellValidating
事件:
private void gridViewHistory_CellValidating(object sender,
DataGridViewCellValidatingEventArgs e)
{
if (.....)
{
e.Cancel = true;
}
}
你可以試試
返回;
語句,但這僅適用於asp:LinkButton OnClick事件,該事件隨后不會傳遞給其他發布事件,例如UpdateCommand。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.