cs_ShayW
Messages postés3253Date d'inscriptionjeudi 26 novembre 2009StatutMembreDernière intervention 3 décembre 2019
-
28 juin 2015 à 09:16
cs_ShayW
Messages postés3253Date d'inscriptionjeudi 26 novembre 2009StatutMembreDernière intervention 3 décembre 2019
-
28 juin 2015 à 11:35
Bonjour,
Je déclare une list of char
Private remainletters As New List(Of Char)
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
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018212 28 juin 2015 à 10:30
Bonjour,
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".
Whismeril
Messages postés18624Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention29 septembre 2023629 28 juin 2015 à 10:53
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)
cs_ShayW
Messages postés3253Date d'inscriptionjeudi 26 novembre 2009StatutMembreDernière intervention 3 décembre 201957 28 juin 2015 à 11:35
Merci à vous deux
en bricolant un peu
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