Windows Forms - Appuyez sur la touche pour activer le bouton Soumettre?

95

Comment puis-je capturer les pressions de touche n'importe où sur mon formulaire et le forcer à déclencher l'événement du bouton d'envoi?

FlySwat
la source
8
Alors pourquoi n'appuyez-vous pas sur la propriété AcceptButton sur la réponse de Matt Hamilton?
Mukus
utilisez 'this.Form.DefaultButton = MyButton.UniqueID;'
Bino Kochumol Varghese

Réponses:

196

Si vous définissez votre Formde » AcceptButtonla propriété à l' un des Buttonsur le s Form, vous obtenez ce comportement par défaut.

Sinon, définissez la KeyPreviewpropriété truesur le Formet gérez son KeyDownévénement. Vous pouvez vérifier la Enterclé et prendre les mesures nécessaires.

Matt Hamilton
la source
8
et n'oubliez pas CancelButton pour gérer la pression de la touche Escape
WholeLifeLearner
1
Impressionnant! J'ai besoin de mieux connaître mon Framewrok;)
Jack
24
private void textBox_KeyDown(object sender, KeyEventArgs e) 
{
    if (e.KeyCode == Keys.Enter)
        button.PerformClick();
}
ruvi
la source
10

Comme indiqué précédemment, définissez la propriété AcceptButton de votre formulaire sur l'un de ses boutons ET définissez la propriété DialogResult pour ce bouton sur DialogResult.OK , afin que l'appelant sache si la boîte de dialogue a été acceptée ou rejetée.

Sorin Comanescu
la source
6

Vous pouvez vous abonner à l' KeyUpévénement du TextBox.

private void txtInput_KeyUp(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter)
       DoSomething();
}
Sanjeev
la source
1
Exactement ce que je cherchais. J'ai le bouton dialogresult réglé sur OK et je ne voulais pas écrire de code inutile pour que ENTER fonctionne!
Kristjan1215
2

Le formulaire a une propriété KeyPreview que vous pouvez utiliser pour intercepter la pression de touche.

itsmatt
la source
1

Utilisez simplement

this.Form.DefaultButton = MyButton.UniqueID;  

** Mettez votre identifiant de bouton à la place de «MyButton».

Bino Kochumol Varghese
la source
0

Définissez l'attribut KeyPreview sur votre formulaire sur True, puis utilisez l'événement KeyPress au niveau de votre formulaire pour détecter la touche Entrée. Lors de la détection, appelez le code que vous auriez pour le bouton «soumettre».

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