desperados27
Messages postés121Date d'inscriptionsamedi 4 novembre 2006StatutMembreDernière intervention 1 juillet 2015
-
4 déc. 2011 à 01:07
desperados27
Messages postés121Date d'inscriptionsamedi 4 novembre 2006StatutMembreDerniè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.
desperados27
Messages postés121Date d'inscriptionsamedi 4 novembre 2006StatutMembreDerniè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 ^^).
cs_Julien39
Messages postés6414Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention29 juillet 2020369 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.
desperados27
Messages postés121Date d'inscriptionsamedi 4 novembre 2006StatutMembreDerniè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