BEEP très ennuyeux

Résolu
desperados27 Messages postés 121 Date d'inscription samedi 4 novembre 2006 Statut Membre Dernière intervention 1 juillet 2015 - 4 déc. 2011 à 01:07
desperados27 Messages postés 121 Date d'inscription samedi 4 novembre 2006 Statut Membre Dernière intervention 1 juillet 2015 - 6 déc. 2011 à 00:24
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

BasicInstinct Messages postés 1470 Date d'inscription mardi 5 février 2002 Statut Membre Dernière intervention 20 octobre 2014 12
5 déc. 2011 à 13:51
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
3
desperados27 Messages postés 121 Date d'inscription samedi 4 novembre 2006 Statut Membre Dernière intervention 1 juillet 2015
6 déc. 2011 à 00:24
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
3
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
5 déc. 2011 à 09:29
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.
0
desperados27 Messages postés 121 Date d'inscription samedi 4 novembre 2006 Statut Membre Dernière intervention 1 juillet 2015
5 déc. 2011 à 14:55
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
0
Rejoignez-nous