2009-11-11 6 views
5

Meine Anwendung hat ein Hauptfenster, das ein TabControl mit etwa 7 TabItems enthält. In jedes tabItem lege ich ein UserControl.Verknüpfungen zum Ändern der aktiven Registerkarte in meiner Anwendung

Ich möchte das (egal die aktive Registerkarte oder Steuerelement), wenn der Benutzer eine Kombination von Tasten drücken, dann springt die Benutzeroberfläche zu einer bestimmten Registerkarte. Das heißt, das gleiche Verhalten, dass Firefox: alt + 1 auf den ersten Tab geht, alt + n auf den N-Tab.

Wie kann ich das erreichen? oder ... was soll ich anfangen zu suchen?

Ich kann Ihnen keinen Code zeigen, weil das Problem ist, dass ich nicht weiß, wie ich anfangen soll.

Dank

+0

Ich gehe davon aus, dass Sie nicht tun Ich möchte 'Alt-42' zulassen. – SLaks

+0

+1 da dies scheinbar ein nicht-triviales Problem ist. –

+0

@Slacks: vielleicht, denn 42 ist die Antwort auf das Leben, das Universum und alles ... und wir wissen nichts über die Tastaturen der Zukunft. : D – Jonathan

Antwort

7

Stellen Sie die KeyPreview Eigenschaft des Formulars auf true, die OnKeyDown (oder OnKeyUp) Methode des Formulars überschreiben, und in den folgenden Code setzen: (Ungeprüfte)

protected override void OnKeyDown(KeyEventArgs e) { 
    base.OnKeyDown(e); 
    if (e.Alt && e.KeyCode > '0' && e.KeyCode <= '9') { 
     tabControl.SelectedIndex = (int)(e.KeyCode - '1'); 
     e.Handled = true; 
    } 
} 
+1

Ausgezeichnet. Das sollte funktionieren. –

+2

Getestet und funktioniert einwandfrei. Ich habe e.KeyCode nur durch e.KeyValue geändert. Vielen Dank. – Jonathan

Verwandte Themen