簡體   English   中英

為什么LostFocus事件會在不同時間被調用?

[英]Why does the LostFocus event get called at different times?

在參考此MSDN頁面 (或關於此事項的任何相關頁面)時,它指出:

使用鍵盤更改焦點時,焦點事件按以下順序發生:

  1. 輸入
  2. 的GotFocus
  3. 離開
  4. 證實
  5. 驗證
  6. 引發LostFocus

但是,當您使用鼠標來引發事件時,訂單會發生變化!

使用鼠標或通過調用Focus方法更改焦點時,焦點事件按以下順序發生:

  1. 輸入
  2. 的GotFocus
  3. 引發LostFocus
  4. 離開
  5. 證實
  6. 驗證

這不會使事件鏈完全不同嗎? 我的解釋是鍵盤鏈確保一切正常,然后引發LostFocus事件。 然而,鼠標事件似乎在出於某種原因進行驗證之前提高了它。 這是為什么?

如上所述:

在MSDN文章中你鏈接的措辭足夠強大? 永遠不要使用LostFocus,只留下。

鍵盤導航必須按此順序才能應用驗證。 這些是為了對它們作出反應以驗證任何輸入字符串。

我能想到的最好的例子是驗證中的e.Cancel方面。 使用鍵盤進行導航通常是控制導航類型(包括子控件和父控件)的控件。 使用鼠標進行表單導航並不總是導致選擇控件。 例如,關閉表單或只是單擊控件外部(即重新定位表單)。 在控件外部發生鼠標單擊時,並不總是希望進行驗證。 希望有所幫助。

暫無
暫無

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

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