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?


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.


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();
}

22

Vous pouvez désigner un bouton comme "AcceptButton" dans les propriétés du formulaire et qui interceptera toutes les touches "Entrée" sur le formulaire et les acheminera vers ce contrôle.

Consultez Comment: désigner un bouton Windows Forms comme bouton d'acceptation à l'aide du concepteur et notez les quelques exceptions qu'il décrit (zones de texte multilignes, etc.)


Merci pour le lien, ces exceptions me retiennent.
ubiquibacon

Ce lien semble être mort.
JAD

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.


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();
}

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.


1

Utilisez simplement

this.Form.DefaultButton = MyButton.UniqueID;  

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


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».


0
  if (e.KeyCode.ToString() == "Return")
  { 
      //do something
  }
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.