2013-04-28 25 views
5

Mam pole tekstowe, a poniżej mam listbox.C# - Jak zastąpić akcje dla "Strzałka w górę" i "Strzałka w dół" dla pola tekstowego?

Podczas wpisywania w polu tekstowym, jeśli naciśnie strzałkę w górę lub w dół, powinien dokonać wyboru w polu listy. Pole tekstowe wykrywa wszystkie znaki (oprócz spacji), ale wydaje się, że nie może wykryć naciśnięć strzałek.

Jakieś rozwiązanie tego? Jest to projekt WPF btw.

EDIT, Oto kod roboczych dzięki 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 
     } 
    } 

Odpowiedz

3
Po prostu próbowałem tego i działa. Dodaj zdarzenie z klawiszem podglądu w dół do pola tekstowego
private void TextBox_PreviewKeyDown(object sender, System.Windows.Input.KeyEventArgs e) 
    { 
     if (e.IsDown && e.Key == Key.Down) 
      MessageBox.Show("It works"); 
    } 
+0

Edytuj komentarz, aby ludzie nie uważali, że nowe rozwiązanie jest zepsute –

+0

@AMR, jeśli wymagane jest zastąpienie zdarzenia klucza, a następnie upewnij się, że ustawiono [Handled] (http://msdn.microsoft.com /en-us/library/system.windows.routedeventargs.handled.aspx) Właściwość true po spełnieniu warunku: 'e.Handled = true;' –

+0

Dzięki człowieku to działa! – Kitze

-1

Można słuchać oni KeyDown wydarzenie tekstowym. W programie obsługi sprawdź, czy klawisz strzałki został naciśnięty (może być konieczne usłyszenie klawisza w górę, aby uniknąć wielokrotnego uruchamiania kodu, jeśli użytkownik przytrzyma przycisk zbyt długo).

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

Rozwiązanie, które przedstawiłeś, to rozwiązanie z WinForm. –

+0

Próbowałem już tego, to nie działa. – Kitze

Powiązane problemy