Comment capturer les touches de saisie n'importe où dans mon formulaire et le forcer à déclencher l'événement bouton de soumission?
Si vous définissez la propriété AcceptButton de votre formulaire sur l'un des boutons du formulaire, vous obtiendrez ce comportement par défaut.
Sinon, définissez la propriété KeyPreview sur True sur le formulaire et gérez son événement KeyDown. Vous pouvez vérifier la touche Entrée et prendre les mesures nécessaires.
Vous pouvez désigner un bouton en tant que "AcceptButton" dans les propriétés du formulaire, ce qui interceptera les touches "Entrée" du formulaire et les acheminera vers ce contrôle.
Voir cet article MSDN et notez les quelques exceptions qu'il décrit (zones de texte multiligne, etc.)
private void textBox_KeyDown(object sender, KeyEventArgs e) {
if (e.KeyCode == Keys.Enter){
button.PerformClick();
}
}
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 était accepté ou rejeté.
Vous pouvez vous abonner à l'événement KeyUp de la zone de texte.
private void txtInput_KeyUp(object sender, KeyEventArgs e)
{
if(e.KeyCode == Keys.Enter)
DoSomething();
}
Le formulaire a une propriété KeyPreview que vous pouvez utiliser pour intercepter la frappe.
Définissez l'attribut KeyPreview de 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".
Simplement utiliser
this.Form.DefaultButton = MyButton.UniqueID;
** Mettez votre identifiant de bouton à la place de 'MyButton'.
if (e.KeyCode.ToString() == "Return")
{
//do something
}