2016-06-21 6 views
1

Gibt es in Windows Form eine Möglichkeit, die aktuell fokussierte Schaltfläche/Steuerung mit der Q-Taste zu aktivieren? Oder überschreiben Sie die Eingabetaste, so dass das Drücken von Q das gerade fokussierte Steuerelement wie Enter aktiviert. Ich möchte, dass der Benutzer die Anwendung mit nur der linken Hand an Tab und Q steuern kann, um die Steuerelemente zu zyklisieren und sie zu aktivieren.Windows Form - Override Eingabe mit einem anderen Schlüssel

Ich habe schon das, aber was brauche ich nach dem e.Handled um den aktuellen Fokus zu aktivieren?

+0

Um den Fokus auf verschiedene Steuerelemente zu verschieben, reicht 'Tab'. Meinst du, du willst 'Q' anstelle von' Enter' auf einem 'Button' verwenden? Was ist mit einer 'TextBox'? –

+0

Die Sache ist, alles ist automatisiert, Sie müssen nur einige Entscheidungen treffen und eine der Tasten drücken, die ich habe, und es wäre schön, wenn der Benutzer die rechte Hand für die Maussteuerung und die linke für Tab + Q verwenden könnte und aktiviere es, ohne die Eingabetaste zu drücken. – Drake

Antwort

2

Als Option Sie ProcessCmdKey außer Kraft setzen können und prüfen, ob der Schlüssel Q dann SendKeys.Send und zurück true mit Enter senden Sie, um anzuzeigen, dass Sie den Schlüssel verarbeitet:

protected override bool ProcessCmdKey(ref Message msg, Keys keyData) 
{ 
    if (keyData == Keys.Q) 
    { 
     SendKeys.Send("{Enter}"); 
     return true; 
    } 
    return base.ProcessCmdKey(ref msg, keyData); 
} 

können Sie begrenzen die Verhalten zu Tasten durch Überprüfung this.ActiveControl is Button, wenn Sie brauchen.

+0

Danke! Es funktioniert! – Drake

+0

Sie sind willkommen :) Sie können das Verhalten auf Schaltflächen beschränken, indem Sie 'this.ActiveControl is Button' aktivieren, wenn Sie benötigen. –