Convertir e.keycode en char [Résolu]

Messages postés
3241
Date d'inscription
jeudi 26 novembre 2009
Dernière intervention
26 novembre 2018
- - Dernière réponse : cs_ShayW
Messages postés
3241
Date d'inscription
jeudi 26 novembre 2009
Dernière intervention
26 novembre 2018
- 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

Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
0
Merci
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
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
0
Merci
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
Messages postés
12372
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
12 décembre 2018
0
Merci
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
Messages postés
3241
Date d'inscription
jeudi 26 novembre 2009
Dernière intervention
26 novembre 2018
0
Merci
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.