检测 Ctrl + 输入
本文关键字:输入 Ctrl 检测 | 更新日期: 2023-09-27 18:32:07
(使用 WPF)我尝试检测何时点击 Ctrl + 输入。所以我尝试了这段代码:
if (e.Key == Key.Return && (e.Key == Key.LeftCtrl || e.Key == Key.RightCtrl))
{
//Do Something
}
显然这是不正确的,因为它不起作用。谁能帮我,解释正确的方法应该是什么?
感谢
显然,e.Key
不能等于同一事件中的多个不同值。
您需要处理使用KeyEventArgs
的事件之一,在那里您会找到诸如Control
和Modifiers
之类的属性,这些属性将帮助您检测组合。
使用 KeyPressEventArgs
的 KeyPress
事件只是没有足够的信息。
德拉特,你说WPF不是吗。 看起来你需要e.KeyboardDevice.Modifiers
.
我认为你需要一个特殊键处理程序。我用谷歌搜索了一下,在这里找到了解决方案。
引用链接中的以下代码可能会解决您的问题:
void SpecialKeyHandler(object sender, KeyEventArgs e)
{
// Ctrl + N
if ((Keyboard.Modifiers == ModifierKeys.Control) && (e.Key == Key.N))
{
MessageBox.Show("New");
}
// Ctrl + O
if ((Keyboard.Modifiers == ModifierKeys.Control) && (e.Key == Key.O))
{
MessageBox.Show("Open");
}
// Ctrl + S
if ((Keyboard.Modifiers == ModifierKeys.Control) && (e.Key == Key.S))
{
MessageBox.Show("Save");
}
// Ctrl + Alt + I
if ((Keyboard.Modifiers == (ModifierKeys.Alt | ModifierKeys.Control)) && (e.Key == Key.I))
{
MessageBox.Show("Ctrl + Alt + I");
}
}
if (e.Modifiers == Keys.Control && e.KeyCode == Keys.Enter)
if (e.KeyChar == 10)
{
///Code
}
或
if ((Char)e.KeyChar == ''n')
{
///Code
}