【发布时间】:2019-07-06 06:04:31
【问题描述】:
我正在单击输入字段以登录我的帐户。问题是现在我得到的所有字母都是大写的。在屏幕截图中,您可以看到输入字段是我输入“aaaa”,但我得到“AAAA”。
1.Here ppl 说 KeyEvent 不能处理小写,但我不知道我有什么选择。奇怪的是,在键盘上打字会产生小写字母。例如。按键盘上的“7”会给我一个“g”。并且不推荐使用字符串或字符,因为最后我需要一个整数/键。
2.这是我现在的台词:
private void MainWindow_PreviewKeyDown(object sender, KeyEventArgs e)
{
if (!(Tag is TcpDeviceClient client)) return;
if (e.Key == Key.Back) e.Handled = true;
client?.SetKey(KeyInterop.VirtualKeyFromKey(e.Key), Keyboard.Modifiers.ToChromiumMods());
我插入了一个您可以在屏幕截图中看到的 Console.WriteLine(这里缺少它的原因是我想节省空间)。每次我打字时,我都会得到三种不同格式的密钥,这些与我的输入不匹配。请注意:在控制台中显示不同的字母。输入字段中显示的字母是正确的(但大写)。
我的问题 如何获得小写的正确按下的键?
【问题讨论】:
-
在您发布的链接中,一些解决方案涉及处理
TextInput或PreviewTextInput,您尝试过吗? -
我尝试了 TextInput 中途,但这意味着我必须使用 String 并在最后转换回 Key。我猜演员阵容会失败。现在我使用 e.Key,假设值是 85,代表 B。如果我愿意 TextInput,我会得到一个字符串“B”代表 B,我不能将它转换为 Key,所以它会变为 85,对吗?
-
我想这取决于你想对输入的字符做什么。您需要整个文本,还是只需要按下的每个字符?你必须有
Key类型还是char? -
我想留在
Key,现在它只是我传递的每个字符。我猜 keylayout/System.Windows.Input 是否有问题? -
如果你得到“B”(a
string),你可以得到字符“B”(achar):myString[0]。要获取 ASCII 值,您只需将字符转换为int:(int)myString[0]。
标签: wpf keyboard chromium cefsharp chromium-embedded