2009-11-11 14 views
5

La mia applicazione ha una finestra principale che contiene un TabControl con circa 7 TabItems. All'interno di ogni scheda ho messo un UserControl.Collegamenti per modificare la scheda attiva nella mia applicazione

Vorrei che (indipendentemente dalla scheda o controllo attivi) quando l'utente preme una combinazione di tasti, l'interfaccia utente passa a una scheda specifica. cioè, Lo stesso comportamento di Firefox: alt + 1 va alla prima scheda, alt + n passa alla scheda N.

Come posso ottenere questo risultato? oppure ... che cosa dovrei iniziare a cercare?

Non riesco a mostrare alcun codice perché il problema è che non so come iniziare.

Grazie

+0

Presumo che non lo fai voglio consentire 'Alt-42'. – SLaks

+0

+1 poiché questo è apparentemente un problema non banale. –

+0

@Slacks: forse, perché 42 è la risposta alla vita, l'universo e tutto ... e non sappiamo nulla delle tastiere del futuro. : D – Jonathan

risposta

7

Impostare KeyPreview proprietà del form true, sovrascrivere il metodo OnKeyDown (o OnKeyUp) del form, e mettere nel codice seguente: (testato)

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

Eccellente. Questo dovrebbe funzionare –

+2

Testato e perfettamente funzionante. Ho modificato e.KeyCode solo da e.KeyValue. Grazie. – Jonathan

Problemi correlati