当您按住Ctrl键并单击WinForm中的按钮时运行?

时间:2013-07-24 16:34:58

标签: vb.net winforms mouseevent keyboard-events

当用户按住ctrl按钮并点击NotifyIcon时,我正在尝试运行不同的代码。

我的代码不起作用,但我觉得它清楚地解释了我何时尝试。这是一个鼠标点击事件。

        Private Sub NotifyIcon_MouseClick(ByVal sender As Object, ByVal e As MouseEventArgs) Handles NotifyIcon.MouseClick
        If (e.Modifiers = Keys.Control) Then
            MsgBox("CTRL was pressed !")
        Else
            MsgBox("CTRL was not pressed !")
        End If
        End Sub

3 个答案:

答案 0 :(得分:5)

不依赖于MouseEventArgs的通用方法:

            If My.Computer.Keyboard.CtrlKeyDown Then
                ...
            Else
                ...
            End If

您还可以检查Alt,Shift ....

答案 1 :(得分:3)

不熟悉VB,但你也将它标记为C#,切换它应该是微不足道的。

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

答案 2 :(得分:0)

您可以使用常规的Click事件来读取ModifierKeys,而无需MouseClick事件。 还要记住,ControlShiftAlt被视为Flags。如果您不将它们用作Flags,则当用户单击同时按住Shift和Control的按钮时,您不会注意到。当用户同时按住两个按钮时,以下三个选项将触发:

if (ModifierKeys.HasFlag(Keys.Shift))
if (ModifierKeys.HasFlag(Keys.Control))
if (ModifierKeys.HasFlag(Keys.Shift) && ModifierKeys.HasFlag(Keys.Control))

此选项仅在用户仅按住Shift键时触发:

if (ModifierKeys == Keys.Shift)