BEEP très ennuyeux [Résolu]

Signaler
Messages postés
121
Date d'inscription
samedi 4 novembre 2006
Statut
Membre
Dernière intervention
1 juillet 2015
-
Messages postés
121
Date d'inscription
samedi 4 novembre 2006
Statut
Membre
Dernière intervention
1 juillet 2015
-
Bonjour,

J'arrive à la fin du développement de mon application, et j'en suis à éditer des raccourcis claviers. Tous fonctionnent... Mais un beep se fait entendre à chaque utilisation de ce raccourci.

J'ai déjà beaucoup cherché sur le forum et sur le net, il y a certains posts qui en parlent mais la solution n'y est pas dans mon cas.

J'utilise un simple KeyEventHandler à l'initialisation de mon programme :
this.KeyDown += new KeyEventHandler(SaveEvent);



Cette procédure reçoit l'évènement KeyDown... Elle simule un click sur le bouton concerné selon la combinaison de touche décrite
//Évènements claviers
        private void SaveEvent(object sender, KeyEventArgs ex)
        {
            try
            {
                ex.Handled = true;
                if ((ex.KeyCode Keys.S) && (ex.Control true))
                {
                    this.toolStripBtnSave.PerformClick();
                }
                if ((ex.KeyCode Keys.W) && (ex.Alt true))
                {
                    this.toolStripBtnSelect.PerformClick();
                }
                if ((ex.KeyCode Keys.X) && (ex.Alt true))
                { 
                    this.toolStripBtnUnselect.PerformClick();
                }
            }
            catch (Exception exc) { MessageBox.Show("Impossible d'écrire les fichiers dans le ini. Erreur : " + exc.Message); }


J'ai également mis la propriété KeyPreview à true pour ma Form



Mes connaissances sont trop limitées, pouvez-vous m'aider à supprimer ce "beep" ?
Merci d'avance.

Sébastien

4 réponses

Messages postés
1471
Date d'inscription
mardi 5 février 2002
Statut
Membre
Dernière intervention
20 octobre 2014
10
Bonjour,

(trop pratique le changement dans la base de registre pour un programme a déployer chez des client...)

essaie en ajoutant un SuppressKeyPress

private void SaveEvent(object sender, KeyEventArgs ex)
        {
ex.SuppressKeyPress = true;
            try
            {
                ex.Handled = true;
                if ((ex.KeyCode Keys.S) && (ex.Control true))
                {
                    this.toolStripBtnSave.PerformClick();
                }
                if ((ex.KeyCode Keys.W) && (ex.Alt true))
                {
                    this.toolStripBtnSelect.PerformClick();
                }
                if ((ex.KeyCode Keys.X) && (ex.Alt true))
                { 
                    this.toolStripBtnUnselect.PerformClick();
                }
            }
            catch (Exception exc) { MessageBox.Show("Impossible d'écrire les fichiers dans le ini. Erreur : " + exc.Message); }





BasicInstinct
Messages postés
121
Date d'inscription
samedi 4 novembre 2006
Statut
Membre
Dernière intervention
1 juillet 2015

MERCI BasicInstinct... pour m'avoir mis sur la piste !
Ton code n'était pas bon, mais j'ai trifouillé et voilà ce que ça donne :

try
{
    if ((ex.KeyCode Keys.S) && (ex.Control true))
    { 
        this.toolStripBtnSave.PerformClick();
        ex.SuppressKeyPress = true;
    }
    if ((ex.KeyCode Keys.W) && (ex.Shift true)) 
    { 
        this.toolStripBtnSelect.PerformClick(); 
        ex.SuppressKeyPress = true;
    }
    if ((ex.KeyCode Keys.X) && (ex.Shift true)) 
    { 
        this.toolStripBtnUnselect.PerformClick();
        ex.SuppressKeyPress = true;
    }
}
catch (Exception exc) { MessageBox.Show("Impossible d'écrire les fichiers dans le ini. Erreur : " + exc.Message); }


Le "ex.SuppressKeyPress = true", comme son nom l'indique, supprime l'action d'avoir appuyé sur une touche.
En gros quand je le mettais au début comme toi BasicInstinct, il m'empêchait carrément de tout faire (comme écrire dans une TextBox par exemple).
Mais en le mettant dans mes conditions de combinaisons de touches, ça fonctionne... Et de part ce fait, je peux mettre au final n'importe quelle combinaisons de touches sans que ça BEEP.

Merci pour tout, sans toi j'aurai jamais trouvé (j'y croyais pas en plus ^^).

Sébastien
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
345
Bonjour,

Ouvres l'éditeur de registre en utilisant "regedit". Ensuite, CURRENT_USER tu as un dossier Sound. Double clique sur BEEP et passe la valeur à no. Ca devrait régler le problème.
Messages postés
121
Date d'inscription
samedi 4 novembre 2006
Statut
Membre
Dernière intervention
1 juillet 2015

Julien39, c'est trop radical. L'application ne sevira pas qu'à moi...

BasicInstinct, merci je vais essayer ça ce soir (mais il me semble avoir déjà essayé)



Sinon j'ai réussi à contourner le problème (sans le résoudre)
J'ai vu que déjà que le 'Ctrl+S' ne fait pas beep quand le focus n'est pas sur une TextBox ou une ComboBox.
Par contre le 'Alt+QQchose' beep à chaque fois quelquesoit le control qui a le focus.

Donc j'ai remplacé tous les 'Alt+QQchose' par 'Shift+QQchose', puis si le focus est sur un TextBox ou ComboBox, j'assigne le focus à un autre type de contrôle

Je posterai le code de cette pseudo-solution ce soir