2009-07-19 5 views
0

J'utilise le code suivant pour décider si un '.' (Arrêt complet) est entré dans un contrôle WebBrowser:HtmlElementEventArgs KeyPressedCode Confusion

private void body_KeyUp(object sender, HtmlElementEventArgs e) 
    { 
     if (e.KeyPressedCode == '.') 
     { 
      // Do something 
     } 
    } 

Selon msdn KeyPressedCode renvoie une valeur ASCII. Ce que j'obtiens en point d'arrêt est '190' si j'entre un '.' toutefois. Ceci n'est même pas listé dans la table ASCII standard. De toute évidence, je pourrais simplement tester 190, mais je crains que KeyPressedCode pourrait renvoyer des valeurs différentes sur différents systèmes avec des pages de codes différentes, des langues et ainsi de suite.

Alors pouvez-vous s'il vous plaît m'expliquer pourquoi KeyPressedCode renvoie «190» au lieu de «46» et comment je peux gérer ce problème «en toute sécurité»?

Il est intéressant de noter que la valeur de retour pour '' (espace) est toujours correcte ('32'). Jouer avec System.Text.Encoding.GetEncoding et différentes pages de code n'a pas résolu le problème, mais je n'ai pas beaucoup d'expérience avec les pages de code.

Répondre

1

Juste une supposition sauvage, mais avez-vous vérifié les valeurs de e.AltKeyPressed, e.CtrlKeyPressed et e.ShiftKeyPressed? J'espère que vous voyez ce que je reçois à ...

2

Vous utilisiez probablement un clavier filaire, car le code-clé 190 est un code-clé OEM de .. Si vous utilisiez un ordinateur portable, il se comporterait comme prévu.