it-swarm.com.de

Windows Forms - Durch Drücken der Eingabetaste wird die Schaltfläche "Senden" aktiviert.

Wie kann ich Eingabetasten an beliebigen Stellen in meinem Formular erfassen und erzwingen, dass das Senden-Button-Ereignis ausgelöst wird?

78
FlySwat

Wenn Sie die AcceptButton-Eigenschaft Ihres Formulars auf eine der Schaltflächen im Formular setzen, wird dieses Verhalten standardmäßig angezeigt.

Setzen Sie andernfalls die KeyPreview-Eigenschaft im Formular auf True, und behandeln Sie das KeyDown-Ereignis. Sie können nach der Eingabetaste suchen und die erforderlichen Maßnahmen ergreifen.

172
Matt Hamilton

Sie können eine Schaltfläche als "AcceptButton" in den Eigenschaften des Formulars festlegen. Dadurch werden alle Eingabetasten im Formular abgerufen und an das Steuerelement weitergeleitet.

Siehe diesen MSDN-Artikel und beachten Sie die wenigen Ausnahmen, die es umreißt (mehrzeilige Textfelder usw.).

20
bouvard
private void textBox_KeyDown(object sender, KeyEventArgs e) {
    if (e.KeyCode == Keys.Enter){
        button.PerformClick();
    }
}
17
ruvi

Setzen Sie, wie bereits erwähnt, die Eigenschaft AcceptButton Ihres Formulars auf eine seiner Schaltflächen, und setzen Sie die Eigenschaft DialogResult für diese Schaltfläche auf DialogResult.OK, damit der Aufrufer wissen kann, ob der Dialog vorhanden war angenommen oder abgewiesen.

9
Sorin Comanescu

Sie können das KeyUp-Ereignis des Textfelds abonnieren.

private void txtInput_KeyUp(object sender, KeyEventArgs e)
{

    if(e.KeyCode == Keys.Enter)
       DoSomething();

}
6
sanjeev

Das Formular verfügt über eine KeyPreview -Eigenschaft, mit der Sie den Tastendruck abfangen können.

2
itsmatt

Setzen Sie das KeyPreview-Attribut in Ihrem Formular auf True, und verwenden Sie dann das KeyPress-Ereignis auf Formularebene, um die Eingabetaste zu ermitteln. Rufen Sie bei der Erkennung den Code an, den Sie für die Schaltfläche "Senden" haben würden.

0
Bill

Einfach verwenden

this.Form.DefaultButton = MyButton.UniqueID;  

** Setzen Sie Ihre Button-ID anstelle von "MyButton" ein.

  if (e.KeyCode.ToString() == "Return")
  { 
      //do something
  }
0
BenW