【问题标题】:How to tell if Shift is being pressed in a MouseDown event?如何判断是否在 MouseDown 事件中按下了 Shift?
【发布时间】:2010-09-13 15:24:51
【问题描述】:

我在一个控件上捕获了一个MouseDown 事件,它在签名中给了我一个MouseEventArgs 对象。现在我希望能够判断用户在单击时是否按住了“Shift”或“Control”键。但是MouseEventArgs 对象不包含任何键盘信息!

判断单击时是否按住键盘 Shift/Ctrl 键的最简单方法是什么?

【问题讨论】:

    标签: winforms events


    【解决方案1】:

    使用 Control.ModifierKeys 属性查看按下的内容。例如:

        private void Form1_MouseClick(object sender, MouseEventArgs e) {
            if (Control.ModifierKeys == Keys.Control) {
                Console.WriteLine("Ctrl+Click");
            }
        }
    

    其他修饰符是Keys.AltKeys.Shift。查找与(Keys.Control | Keys.Shift) 的组合。

    【讨论】:

    • 因为它是一个按位标志枚举(即一次可以是多个值),你可能需要Control.ModifierKeys.HasFlag(Keys.Control)——如果 CTRL+这将提供true > 被按下。
    • 不那么可取,用户在使用 Ctrl+Shift+Click 时会期望发生其他事情。
    • 因此我的评论中出现了 "might" ;) 不过,我错过了你答案的底部,回复:“找到与...的组合”
    【解决方案2】:

    【讨论】:

      猜你喜欢
      • 2012-09-13
      • 2010-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-12
      • 2010-10-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多