首先並不是每個事件的e參數都有上述兩個屬性。 e.Cancel:獲取或設置指示是否應取消事件的值;e.Handled:獲取或設置一個值,該值指示是否處理過此事件。 下麵說說比較常見的場景: 1)e.cancel: ①視窗關閉,比如用戶點擊視窗右上角想關閉,但代碼里彈出確認框讓用戶確認是否真的想退出, ...
首先並不是每個事件的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中的選中行卻被刪除了。