Convertir e.keycode en char [Résolu]

cs_ShayW 3238 Messages postés jeudi 26 novembre 2009Date d'inscription 14 mars 2018 Dernière intervention - 28 juin 2015 à 09:16 - Dernière réponse : cs_ShayW 3238 Messages postés jeudi 26 novembre 2009Date d'inscription 14 mars 2018 Dernière intervention
- 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





Merci
Afficher la suite 

Votre réponse

4 réponses

ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - 28 juin 2015 à 10:30
0
Utile
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".

Commenter la réponse de ucfoutu
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - 28 juin 2015 à 10:36
0
Utile
Il te faut donc à mon sens nécessairement déclarer que tu vas utiliser tel ou tel autre clavier avant de l'utiliser
Sous VB.Net, cela peut apparemment se faire comme tu le verras ici :
http://www.commentcamarche.net/forum/affich-11596045-changement-de-langue-sous-vb-net
Commenter la réponse de ucfoutu
Whismeril 11534 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 22 mai 2018 Dernière intervention - 28 juin 2015 à 10:53
0
Utile
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)

Commenter la réponse de Whismeril
cs_ShayW 3238 Messages postés jeudi 26 novembre 2009Date d'inscription 14 mars 2018 Dernière intervention - 28 juin 2015 à 11:35
0
Utile
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
Commenter la réponse de cs_ShayW

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.