我希望键盘上的按键有或没有caplock:
private void Window_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
{
e.Key.ToString();
}
Run Code Online (Sandbox Code Playgroud)
当我在键盘上键入"a"或"A"时,e.Key的结果始终为"A".如何输入'a'进入'a'?
您无法使用该KeyDown活动.您需要使用该TextInput活动.这将打印原始字母及其标题(大写/小写).
private void Window_TextInput(object sender, TextCompositionEventArgs e)
{
Console.WriteLine(e.Text);
}
Run Code Online (Sandbox Code Playgroud)
现在,如果按下它,它也会打印Shift等等.如果你不希望那些修饰符只是获取字符串的最后一项 - 将它作为一个char数组;) -
您可以使用Control.IsKeyLocked方法检查KeyDown事件是否CAPS lock打开或关闭.此外,您可能需要检查用户是否使用密钥键入资本,该密钥可以使用这样的枚举来识别-ShiftModifiers
private void Window_KeyDown(object sender, KeyEventArgs e)
{
string key = e.Key.ToString();
bool isCapsLockOn = System.Windows.Forms.Control
.IsKeyLocked(System.Windows.Forms.Keys.CapsLock);
bool isShiftKeyPressed = (Keyboard.Modifiers & ModifierKeys.Shift)
== ModifierKeys.Shift;
if (!isCapsLockOn && !isShiftKeyPressed)
{
key = key.ToLower();
}
}
Run Code Online (Sandbox Code Playgroud)
覆盖TextInput / PreviewTextInput(或监听事件)应该可以工作。
protected override void OnPreviewTextInput(TextCompositionEventArgs e)
{
base.OnPreviewTextInput(e);
Console.WriteLine(e.Text);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2925 次 |
| 最近记录: |