2011-06-14 21 views
7

我有一個處理TextBox的PreviewLostKeyboardFocus事件。當我使用鍵盤(Tab鍵)或鼠標(通過單擊表單上的另一個TextBox)離開文本框時它會觸發。用戶是否使用鍵盤或鼠標離開WPF文本框?

該處理程序需要一個KeyboardFocusChangedEventArgs,它有一個名爲KeyboardDevice的屬性,在任何一種情況下(我希望在使用鼠標時都可以在這裏找到null)都不爲空。

問題:如何判斷用戶是使用鍵盤還是鼠標離開WPF文本框?

+0

如果焦點離開控件,因爲其他控件抓住焦點[在代碼](http://msdn.microsoft.com/en-us/library/system.windows.uielement.focus.aspx)? – Vlad 2011-06-14 13:59:11

+2

設置按鍵偵聽程序並檢測選項卡是否被按下不是更好嗎?如果選項卡按下,則可以相應地作出響應,否則就會假設它們以其他方式離開,例如通過鼠標。我不熟悉WPF,但在許多UI庫中,您可以捕獲Tab鍵,並覆蓋它的操作。我猜你實際上想要將一個標籤插入文本區域,而不是離開去下一個字段。 – Kibbee 2011-06-14 14:09:05

+0

我同意Kibbee在這裏:如何爲Tab鍵添加一個'EventHandler',或者如果調用例如 – Damascus 2011-06-14 14:20:23

回答

3

e.KeyboardDevice.GetKeyStates(Key.Tab)(其中e是類型KeyboardFocusChangedEventArgs的)報告:

  • (當使用鼠標來改變焦點)
  • 向下,已切換(當TAB是使用離開文本框)

會爲你工作?

+0

今天我也有這個想法,但認爲可能存在計時問題,因爲您在這裏有兩個不同的事件。此處的另一個評論也表達了同樣的觀點:在90%的情況下,這取決於在按鍵被按下時是否觸發事件。我不會依賴那個。 – ygoe 2012-07-30 07:54:49

相關問題