c#wpf监听是否同时按下ctrl shift
时间: 2023-11-22 20:28:41 浏览: 106
C# Winform中监听/禁用系统快捷键(CTRL+ALT+DEL和WIN+L除外)
在 WPF 中,你可以使用 `PreviewKeyDown` 事件来监听是否同时按下了 Ctrl 和 Shift 键。下面是一个示例代码:
```csharp
private void Window_PreviewKeyDown(object sender, KeyEventArgs e)
{
if (Keyboard.Modifiers == (ModifierKeys.Control | ModifierKeys.Shift))
{
// Ctrl + Shift 键同时被按下了
}
else if (Keyboard.Modifiers == ModifierKeys.Control)
{
// Ctrl 键被按下了
}
else if (Keyboard.Modifiers == ModifierKeys.Shift)
{
// Shift 键被按下了
}
else
{
// 其他键被按下了
}
}
```
这段代码会监听窗口的 `PreviewKeyDown` 事件。在事件处理程序中,我们可以使用 `Keyboard.Modifiers` 属性来判断是否按下了 Ctrl 或者 Shift 键。如果 `Keyboard.Modifiers` 的值为 `ModifierKeys.Control | ModifierKeys.Shift`,则说明 Ctrl + Shift 键同时被按下了。如果 `Keyboard.Modifiers` 的值为 `ModifierKeys.Control`,则说明 Ctrl 键被按下了。如果 `Keyboard.Modifiers` 的值为 `ModifierKeys.Shift`,则说明 Shift 键被按下了。如果 `Keyboard.Modifiers` 的值为其他值,则说明其他键被按下了。
需要注意的是,`Keyboard.Modifiers` 属性是一个位掩码枚举,它可以包含多个枚举值。如果你想判断多个键是否同时按下,可以使用按位与运算符 `&` 来组合枚举值。例如,如果你想判断 Ctrl 和 Shift 键是否同时按下,可以写成 `Keyboard.Modifiers == (ModifierKeys.Control | ModifierKeys.Shift)`。
阅读全文