Lors de la manipulation Pour des raisons de convivialité, j'ai besoin exactement le même Le Comment obtenir un merci. p> Control.OnkeyPress CODE> Evénement, il existe un
keighpresserEventargs code> contenant un
keychar code>. p>.
keychar code> mais lors de la manipulation
ONKEDOODOD code> événement. P>
keeventargs code> ne contient aucune donnée connexe. Je veux dire, si appuyez sur la touche
A CODE> avec ou sans
Shift CODE> SI N'affect pas n'affectant pas le code KeyCode code>,
keydata code> ou
ou
KeyValue code>. La même chose lors de l'utilisation d'une autre langue, je reçois toujours des valeurs anglaises en anglais. P>
keighpressereventargs.keychar code> intérieure
clé code> événement? P>
3 Réponses :
Je pense que ce que vous cherchez est en fait la propriété de code-clés.
private void textBox1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e) { // Determine whether the key entered is the F1 key. If it is, display Help. if(e.KeyCode == Keys.A) { // Do something kewl } else if(e.KeyCode == Keys.B) { // Do something even kewler } }
Convertissez-le. Voici une fonction simple pour convertir 'A' à 'A'. Il convertit uniquement des caractères de capital de [A-Z] Strong> Set. La valeur 32 est diff entre "A" et "A" .. Bien sûr, vous pouvez l'étendre à vos exigences ou demander une fonctionnalité ici. protected override bool ProcessKeyMessage( ref Message m )
{
if ( ( m.Msg == 0x102 ) || ( m.Msg == 0x106 ) ) // this is special - don't remove
{
char c = (char) m.WParam; // here is your char for OnKeyDown event ;)
}
return base.ProcessKeyMessage( ref m );
}
Et comment je considère la langue active? Par exemple, si la langue active est russe, je veux obtenir des caractères russes.
Vous devriez remplacer la méthode de contrôle processkeyyMessage comme décrit dans mon message.
En début, je pensais que cela ne vérifierait pas la serrure des capuchons, mais je viens d'effectuer un test dessus et qu'il définit le drapeau de décalage si le verrouillage des capuchons est en hausse et que le changement n'est pas enfoncé. alors bravo (y)
Si la raison pour laquelle vous souhaitez utiliser la clé au lieu de KeyPress consiste à capturer les informations supplémentaires données à un événement de clé, pourriez-vous peut-être capturer ces informations supplémentaires dans un événement de clé, puis l'utiliser lorsque vous obtenez la touche de frappe? Plutôt une approche Hokey, pour être sûr, mais je ne suis pas sûr d'une autre approche qui fonctionnera vraiment dans une cartographie clavier qui a des "clés mortes" (c'est-à-dire des séquences à deux clés qui produisent un seul caractère). Je ne sais pas pourquoi Microsoft n'a pas mené plus d'informations à l'événement KeyPress (ou à un grand nombre de ses événements, car une tentative de correspondance n'est pas parfaite, mais je n'ai pas 't sais vraiment une meilleure alternative. P>
La raison pour laquelle je veux utiliser keydown code> au lieu de
keypress code> est de réduire l'heure entre l'utilisateur enfoncé une touche jusqu'à la réponse de mon programme.
KeyPress CODE> CAOUTER UNIQUEMENT après que l'utilisateur a quitté la clé, ce qui ajoute un temps supplémentaire inutile jusqu'à ce que mon programme réponde.
Et quel frais voulez-vous quand la touche Alt est libérée?
KeyPress CODE> Ne pas tirer lorsque la touche Alt est publiée, mais
Keydown Code> Tir de toute façon, dans ce cas, le char "\ 0 'est assez bon.