je remplis cette liste et verifie à l'évenement Form1_KeyDown si le key
se trouve dans la liste .
J'utilise les caractères du clavier espagnol(que j'ai ajouté)
le clavier de base est us
Le problème est que
Si par ex remainletters contient Ñ et que je frappe la touche qui correspond
à la lettre Ñ j'obtiens un résultat erroné
Private Sub Form1_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
If Not remainletters.Contains(Convert.ToChar(e.KeyCode)) And (e.KeyValue <> 8) Then Exit Sub End If
Je ne crois pas que cela soit possible, dès lors que Windows réagit en fonction, à la fois :
- de la touche pressée (sa position)
- de l'affectation faite d'un caractère à cette touche
Or, il n'y a à ma connaissance qu'une seule affectation possible : celle définie pour l'objet clavier (global).
Pour être plus clair : si par exemple tu :
- branches un clavier azerty
- et un second clavier qwerty
- et que tu choisis de déclarer que ton clavier est Français
===>>>
la pression de la touche A sur le clavier français affichera "a"
la pression de la touche Q sur le clavier anglais affichera également "a" et non "q".
Bonjour, vite fait, il y a peut-être moyen de prendre directement le bon cultureinfo sans passer par la récupération de tous les existants
Dim es As Globalization.CultureInfo = Globalization.CultureInfo.GetCultures(Globalization.CultureTypes.AllCultures)(9)
Dim c As Char = Convert.ToChar(209, es)
Dim c As Char If e.KeyCode = Keys.Oem3 Then c = "Ñ"c Else c = Convert.ToChar(e.KeyCode) End If If Not remainletters.Contains(c) And (e.KeyValue <> 8) Then Exit Sub End If
ou
Dim c As Char Dim es As Globalization.CultureInfo = Globalization.CultureInfo.GetCultures(Globalization.CultureTypes.AllCultures)(9) If e.KeyCode = Keys.Oem3 Then c = "Ñ"c Else c = Convert.ToChar(e.KeyCode, es) End If If Not remainletters.Contains(c) And (e.KeyValue <> 8) Then Exit Sub End If