C#中e.Cancel,e.Handled的區別與應用


 

首先並不是每個事件的e參數都有上述兩個屬性。

e.Cancel:獲取或設置指示是否應取消事件的值;e.Handled:獲取或設置一個值,該值指示是否處理過此事件。

下面說說比較常見的場景:

1)e.cancel:

①窗口關閉,比如用戶點擊窗口右上角想關閉,但代碼里彈出確認框讓用戶確認是否真的想退出,如果用戶選擇了否,則e.cancel = true即可;

②DataGridview單元格的編輯,如果想排除某些列的編輯操作,只需在CellBeginEdit事件中,判斷如果當前單元格屬於要排除的列,e.Cancel = true即可,也就不會執行CellEndEdit事件了;

③讓TreeView控件指定節點的選中無效,如讓根節點的選中無效,只需在TreeView控件的BeforeSelect事件中判斷如果為根節點,e.Cancel = true即可,也就不會執行節點的NodeMouseClick事件了。

2)e.Handled:多用在過濾某些事件,比如鍵盤按鍵

①如要求文本框只能輸入數字,那么當輸入的是字母,則e.handled=true即可,無效化剛剛輸入的鍵值;

②DataGridView控件默認按下Delete鍵會刪除選中的行,如果想實現按下Delete鍵時彈出確認框是否刪除,點擊“是”才刪除數據庫中對應的數據,相應的也刪除DataGridview的選中行,點擊“否”不刪除數據庫中對應的數據,也不刪除DataGridview的選中行,只需在點擊“否”時,e.Handled = true即可。e.Handled = true很關鍵,沒有這句,點擊“否”時雖然能控制不刪除數據庫中的對應數據,但DataGridview中的選中行卻被刪除了。

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM