142 votes

Arrêtez le 'Ding' en appuyant sur Entrée

J'ai une question très simple Application Windows Forms. Et, dans Windows (ou, au moins des Applications Windows Forms), lorsque vous appuyez sur Entrée tandis qu'à l'intérieur d'une Seule ligne de Contrôle de zone de texte, vous pouvez entendre le Ding. C'est d'un désagréable bruit, qui indique vous ne pouvez pas entrer un retour à la ligne, parce que c'est une zone de texte simple.

C'est toute fine. Cependant, dans mon Formulaire, j'ai 1 TextBox et un Bouton de Recherche. Et je suis en permettant à l'utilisateur d'Effectuer une recherche en appuyant sur Entrée après qu'ils ont terminé la saisie, afin de ne pas avoir à utiliser la souris pour cliquer sur le Bouton de Recherche.

Mais ce Ding son produit. C'est très ennuyeux.

Comment pouvons-nous faire en sorte juste que le son ne jouent pas du tout dans mon Formulaire?

@David H - Voici comment je suis détection de l'entrée en appuyant sur:

private void textBox1_KeyUp(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter)
    {
        // Perform search now.
    }
}

227voto

Lucio Fonseca Points 495

Ça marche pour moi:

 private void textBox1_KeyDown(object sender, KeyEventArgs e)
{

    //Se apertou o enter
    if (e.KeyCode == Keys.Enter)
    {
        //enter key is down

        this.doSomething();

        e.Handled = true;
        e.SuppressKeyPress = true;

     }

 }
 

Le SuppressKeyPress est le vrai truc. J'espère que cela vous aidera.

59voto

mdm Points 7651

Découvrez la Forme.AcceptButton de la propriété. Vous pouvez l'utiliser pour spécifier une valeur par défaut bouton sur un formulaire, dans ce cas, pour en appuyant sur entrée.

À partir de la documentation:

Cette propriété vous permet de désigner une action par défaut lorsque la utilisateur appuie sur la touche ENTRÉE de votre application. Le bouton assigné à cette propriété doit être un IButtonControl qui est sur le courant forme ou situé à l'intérieur d'un conteneur sur la forme actuelle.

Il y a aussi un CancelButton propriété lorsque l'utilisateur appuie sur escape.

57voto

Abdul Muqtadir Points 3887

Essayer

 textBox.KeyPress += new KeyPressEventHandler(keypressed);

private void keypressed(Object o, KeyPressEventArgs e)
{
    if (e.KeyCode == Keys.Enter)
    {
        e.Handled = true; //this line will do the trick
    }
}
 

2voto

Colin Points 36

Je suis tombé sur ce post en essayant de gérer un KeyDown cela a fonctionné pour moi.

 If e.KeyCode = Keys.Enter Then
   e.SuppressKeyPress = True
   btnLogIn.PerformClick()
End If
 

Supprimer la touche Appuyez d'empêcher que l'événement soit envoyé au contrôle sous-jacent. Cela devrait fonctionner si vous manipulez manuellement tout ce que la touche Entrée fera dans cette zone de texte. Désolé pour le Visual Basic.

0voto

Zruty Points 4078

Définissez la propriété IsDefault de votre bouton de recherche sur true . Cela en fera un bouton par défaut et il sera automatiquement cliqué lorsque vous appuierez sur Entrée.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X