2015-05-11 9 views
5

Witam wszystkich Chcę używany klawisz skrótu (za pomocą klawisza lewy i prawy) w WPF i TabControl do nawigacji pomiędzy tabitem mam ustawiony kod w Window_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)jak poruszać się pomiędzy tabitem z lewą i prawą w WPF

tak:

switch (e.Key) 
      { 
       case Key.Right: 
        if (tbControl.TabIndex == 0) 
         tbControl.TabIndex = 1; 
        break; 

       case Key.Left: 
        if (tbControl.TabIndex == 0) 
         tbControl.TabIndex = 1; 
        break; 
      } 

ale to nie jest nic chcę nawigację pomiędzy tabitem z lewą i prawą dzięki

+0

Czy Twoja metoda się nazywa? Umieść punkt przerwania i debuguj go. – nvoigt

+1

Chyba chcesz uchwycić "globalny keyhook" .. – User2012384

+0

@ nvoigt yes Użyłem breakpointa, ale nie wykryłem keydown !!! – Faraz

Odpowiedz

4

używasz TabControl.TabIndex kiedy należy używać TabControl.SelectedIndex, tak:

private void Window_KeyDown(object sender, KeyEventArgs e) 
{ 
    switch (e.Key) 
    { 
     case Key.Right: 
      if (tbControl.SelectedIndex == 0) 
       tbControl.SelectedIndex = 1; 
      break; 
     case Key.Left: 
      if (tbControl.SelectedIndex == 1) 
       tbControl.SelectedIndex = 0; 
      break; 
    } 
} 

TabIndex jest wspólny dla wszystkich elementów sterujących i reprezentuje kolejność, w której kontrole są skoncentrowane, gdy użytkownik naciśnie Tab klucz. SelectedIndex jest specyficzne dla kontrolek selektora (na przykład TabControl, ListBox, ComboBox itd.) I reprezentuje indeks aktualnie wybranego elementu we wspomnianej kontrolce.

Również, jeśli chcesz to do pracy z więcej niż dwóch kart, chciałbym zmienić swoje wypowiedzi case na coś bardziej jak to:

case Key.Right: 
    if (tbControl.SelectedIndex < tbControl.Items.Count - 1) 
     tbControl.SelectedIndex++; 
    break; 

case Key.Left: 
    if (tbControl.SelectedIndex > 0) 
     tbControl.SelectedIndex--; 
    break; 
Powiązane problemy