[英]Why does the LostFocus event get called at different times?
在參考此MSDN頁面 (或關於此事項的任何相關頁面)時,它指出:
使用鍵盤更改焦點時,焦點事件按以下順序發生:
- 輸入
- 的GotFocus
- 離開
- 證實
- 驗證
- 引發LostFocus
但是,當您使用鼠標來引發事件時,訂單會發生變化!
使用鼠標或通過調用Focus方法更改焦點時,焦點事件按以下順序發生:
- 輸入
- 的GotFocus
- 引發LostFocus
- 離開
- 證實
- 驗證
這不會使事件鏈完全不同嗎? 我的解釋是鍵盤鏈確保一切正常,然后引發LostFocus
事件。 然而,鼠標事件似乎在出於某種原因進行驗證之前提高了它。 這是為什么?
如上所述:
在MSDN文章中你鏈接的措辭足夠強大? 永遠不要使用LostFocus,只留下。
鍵盤導航必須按此順序才能應用驗證。 這些是為了對它們作出反應以驗證任何輸入字符串。
我能想到的最好的例子是驗證中的e.Cancel方面。 使用鍵盤進行導航通常是控制導航類型(包括子控件和父控件)的控件。 使用鼠標進行表單導航並不總是導致選擇控件。 例如,關閉表單或只是單擊控件外部(即重新定位表單)。 在控件外部發生鼠標單擊時,並不總是希望進行驗證。 希望有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.