2015-10-30 1 views
0

Lorsque j'appuie sur '#' sur mon périphérique MC45, je souhaite appeler une méthode. Mon code ressemble:# Le bouton # ne fonctionne pas dans la touche de raccourci C#

void MyForm_KeyDown(object sender, KeyEventArgs e) 
{ 
    int keyValue = e.KeyValue; 
    switch (keyValue) 
    { 
     case 16: // Do Something 
     { 

     } 
    } 
} 

la valeur de clé pour « # » est 16. Alors, quand je presse « # » il fonctionne très bien, mais un appel ultérieur sur KeyDown se produit avec une valeur clé « 51 » à chaque fois. Pourquoi ?? Comment puis-je arrêter cet appel ultérieur ??

+0

Lisez ici: http://stackoverflow.com/q/564338/5089204 ou pensez à 'ProcessCmdKey'. – Shnugo

+0

Ici, j'ai répondu à une question connexe, pourrait aider aussi: http://stackoverflow.com/q/33355205/5089204 – Shnugo

+0

Ma question est pourquoi un appel ultérieur avec keyValue 51 arrive, juste après l'événement de clé de #. – MainakChoudhury

Répondre

1

Hans Passant a raison, les événements clés '#' sont Shift + 3 (disposition du clavier américain).

Pour détecter la touche '#', vous devez utiliser l'événement KeyPress et non KeyDown/KeyUp. Un autre écueil possible: sur Windows Mobile 6.5.3 plus récent, # et * peuvent être mappés sur VK_TSTAR et VK_TPOUND et ceux-ci sont mappés sur VK_F8 et VK_F9. Voir winuserm.h:

Le résultat de cette peut-être que votre application ne voit pas les * et # presses comme ils sont envoyés comme F8 et F9 par le système d'exploitation.