2011-12-02 29 views
0

我有一個水印keydown的問題。我有一個像這樣的keydown事件處理程序。KeyDown上的Watermark難題

if (e.Key == Key.Tab) 
     { 
      FocusManager.GetFocusedElement(); 

      if (FocusManager.GetFocusedElement() == txtPassword) 
       btnLogin.Focus(); 
      else if (FocusManager.GetFocusedElement() == txtUserName) 
       txtPassword.Focus(); 
      else 
       txtUserName.Focus(); 
     } 

它工作正常,但是當焦點在btnLogin,當你按Tab鍵,焦點就直接到密碼框。我插入了斷點無濟於事。它只傳遞一次代碼,並且它進入else語句。有任何想法嗎?感謝所有回覆。

+0

是否有任何特定的原因,您沒有使用內置選項卡功能? –

+0

@competent_tech是的。這是因爲我們在MAC上運行此應用時遇到了一些技術問題。 Mac上的問題是,當我從txtUserName中選擇標籤時,標籤會轉到瀏覽器的地址欄。這就是爲什麼我試圖對這個進行硬編碼。 – Nathan

+0

哎。我假設你檢查了控件上的tabindexes,以確保它們按照正確的順序排列,以防Mac實現只是選擇這些控件? –

回答

1

不確定Watermark是什麼,但通常這是由於您攔截Tab並執行某些操作而導致的,然後事件冒泡並由默認處理程序再次處理。

嘗試消耗事件,以免發生這種情況。可能是類似e.preventDefault()或e.stopPropagation()

+0

這給了我一個主意。我在標籤上添加了e.Handled = true,並且幾乎像其他任何網站一樣運行。謝謝。 – Nathan