C #: Comment faire en appuyant sur Entrée dans une zone de texte déclenche un bouton, tout en autorisant les raccourcis tels que “Ctrl + A”?

Désolé pour le titre long, mais je ne pouvais pas penser à une autre façon de le dire.

J’ai ceci:

private void textBoxToSubmit_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { buttonSubmit_Click((object)sender, (EventArgs)e); } } 

… pour que vous puissiez appuyer sur entrer dans la zone de texte, activez le bouton “valider”. Cependant, cela empêche également les raccourcis de passer. (pas tout à fait sûr de ce que ça a à voir avec ça, peut-être que des combos multi-touches?)

ShortcutsEnabled est défini sur true.

Merci d’avance!

Ne pouvez-vous pas utiliser AcceptButton dans la fenêtre Propriétés du formulaire? Ceci définit le comportement par défaut pour la touche Entrée , mais vous pouvez toujours utiliser d’autres raccourcis.

Si vous souhaitez que le retour ne déclenche une action que lorsque l’utilisateur est dans la zone de texte, vous pouvez affecter le bouton souhaité au contrôle AcceptButton, comme ceci.

  private void textBox_Enter(object sender, EventArgs e) { ActiveForm.AcceptButton = Button1; // Button1 will be 'clicked' when user presses return } private void textBox_Leave(object sender, EventArgs e) { ActiveForm.AcceptButton = null; // remove "return" button behavior } 

Vous pouvez utiliser KeyPress au lieu de KeyUp ou KeyDown, qui est plus efficace. Voici comment gérer

 private void textBox1_KeyPress(object sender, KeyPressEventArgs e) { if (e.KeyChar == (char)Keys.Enter) { e.Handled = true; button1.PerformClick(); } } 

esperons que ça marche

Vous n’avez besoin d’aucun code côté client si vous utilisez ASP.NET. L’exemple ci-dessous est une zone de saisie boostrap avec un bouton de recherche avec une icône fontawesome.

Vous verrez que, au lieu d’utiliser une balise

classique avec une classe de “input-group”, j’ai utilisé un asp: Panel. La propriété DefaultButton définie sur l’id de mon bouton fait l’affaire.

Dans l’exemple ci-dessous, après avoir tapé quelque chose dans la zone de saisie, vous appuyez simplement sur Entrée, ce qui entraînera une soumission.