【问题标题】:Getting shift/ctrl/alt states from a mouse event?从鼠标事件中获取 shift/ctrl/alt 状态?
【发布时间】:2010-11-19 12:13:20
【问题描述】:

在我的WPF 应用程序中,如何在鼠标事件处理程序中获取 shiftctrlalt 键的状态?我似乎记得在MFC 中,您可以从鼠标事件中获取该信息。

【问题讨论】:

    标签: c# wpf mouseevent


    【解决方案1】:

    假设您仍在鼠标事件处理程序中,您可以检查Keyboard.Modifiers 的值。我认为无论如何都无法从事件本身获取修饰符信息,因此您必须直接询问键盘。

    【讨论】:

    • 多么烦人...如果我理解正确,这意味着如果用户在触发鼠标事件和事件处理程序询问键盘之间松开键盘,它将检测到错误的键状态。
    • @M.Dudley 不管你是捕捉键盘状态还是 WPF 捕捉键盘状态都没有关系……鼠标和键盘是不相交的,所以竞态条件是不可避免的。
    【解决方案2】:

    根据安迪的回答,您使用 Keyboard.Modifiers。我想我会发布一个小例子

    在你的事件处理程序中这样的东西应该可以工作:

    private void MyExampleButton_Click(object sender, RoutedEventArgs e)
    {
        if ((Keyboard.Modifiers & ModifierKeys.Control) > 0) {
            System.Diagnostics.Debug.WriteLine("Control is pressed");
        } else {
            System.Diagnostics.Debug.WriteLine("Control is NOT pressed");
        }
    }
    

    问候, 迈克

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-15
      • 1970-01-01
      • 1970-01-01
      • 2011-02-20
      • 1970-01-01
      • 2012-04-02
      • 2018-06-30
      • 2022-12-31
      相关资源
      最近更新 更多