c# - 如何判断修改键何时被按下/释放

标签 c# wpf events modifier-key

我想知道何时按下或释放修改后的键(CtrlShift)。

基本上,用户可以在按下修改键的情况下执行多次击键,而我不想在它被释放之前执行一个操作(想想 EmacsCtrl + X + S).

我试图用 PreviewKeyUp 和 PreviewKeyDown 来做到这一点,但这似乎处理普通键而不是修饰符。一旦我在事件中,我就可以判断修改键是否被按下,但我无法判断修改键是否在事件之间被释放和重新按下。

最佳答案

protected override void OnPreviewKeyDown(KeyEventArgs e)
{
    // I just picked that key for a sample
    case Key.Tab:
        if (Keyboard.IsKeyDown(Key.LeftShift) ||
            Keyboard.IsKeyDown(Key.RightShift))
        {
            DoMyStuff();
        }


    // Similar things for Ctrl:

       if (Keyboard.IsKeyDown(Key.LeftCtrl) ||
           Keyboard.IsKeyDown(Key.RightCtrl))
        {
            ....
        }

关于c# - 如何判断修改键何时被按下/释放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10353572/

相关文章:

c# - 以数字形式返回的枚举值

c# - XamlReader 和变音符号

javascript - 事件处理程序无法访问 JavaScript 中的对象方法

events - 如何检测双击或长按 Highcharts 图表中的点?

javascript - javascript 上的预期十六进制

C# 数据库搜索(如何创建查询字符串)

c# - tabcontrol selectedindex 更改事件未被触发 C#

wpf - 为什么处理 WM_NCCALCSIZE 会导致我的窗口跳转?

c# - 删除 XAML 用户控件上的 DataContextChanged/Loaded 事件处理程序

events - 虚拟事件多重绑定(bind)未按预期工作