2013-04-28 52 views
5

我有一個文本框,下面有一個列表框。C# - 如何覆蓋文本框的「向上箭頭」和「向下箭頭」的操作?

當用戶按下向上或向下箭頭鍵入文本框時,他應該在列表框中進行選擇。該文本框檢測所有的字符(空間除外),但它似乎無法檢測箭頭按下。

這個任何解決方案?這是一個WPF項目順便說一句。

編輯,這裏的工作代碼感謝T.Kiley:

private void searchBox_PreviewKeyDown(object sender, KeyEventArgs e) 
    { 
     if (e.IsDown && e.Key == Key.Down) 
     { 
      e.Handled = true; 
      //do your action here 

     } 
     if (e.IsDown && e.Key == Key.Up) 
     { 
      e.Handled = true; 
      //do another action here 
     } 
    } 

回答

3

我剛試過這個,它的工作原理。添加預覽鍵按下事件的文本框

private void TextBox_PreviewKeyDown(object sender, System.Windows.Input.KeyEventArgs e) 
    { 
     if (e.IsDown && e.Key == Key.Down) 
      MessageBox.Show("It works"); 
    } 
+0

請編輯您的評論,以便人們不認爲新的解決方案是打破了一個 – 2013-04-28 15:07:36

+0

@ AMR如果要求是重寫關鍵事件,那麼一定要設置[Handled](http://msdn.microsoft.com /en-us/library/system.windows.routedeventargs.handled.aspx)在符合條件後屬性爲true:'e.Handled = true;' – 2013-04-28 16:45:47

+0

謝謝你,這個工程! – Kitze 2013-04-29 09:53:23

-1

你可以聽他們KeyDown事件文本框的。在處理程序中,檢查是否按下了箭頭鍵(如果用戶長時間按住按鈕,您可能需要聽取按鍵以避免觸發代碼多次)。

private void textBox1_KeyDown(object sender, KeyEventArgs e) 
{ 
    if (e.KeyCode == Keys.Down) 
    { 
     // Do some code... 
    } 
} 
+0

你提出的解決方案是一個winform的解決方案 – 2013-04-28 14:33:21

+0

我想這已經,這是行不通的。 – Kitze 2013-04-28 14:54:42

相關問題