Vb.net 在WinForm中按住ctrl键并单击按钮时运行?

Vb.net 在WinForm中按住ctrl键并单击按钮时运行?,vb.net,winforms,mouseevent,keyboard-events,Vb.net,Winforms,Mouseevent,Keyboard Events,当用户按住ctrl键并单击Notify图标时,我试图运行另一个代码 我的代码不起作用,但我觉得它清楚地解释了我在做什么。这是在鼠标单击事件下 Private Sub NotifyIcon_MouseClick(ByVal sender As Object, ByVal e As MouseEventArgs) Handles NotifyIcon.MouseClick If (e.Modifiers = Keys.Control) Then

当用户按住ctrl键并单击Notify图标时,我试图运行另一个代码

我的代码不起作用,但我觉得它清楚地解释了我在做什么。这是在鼠标单击事件下

        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

虽然不太精通VB,但您也将其标记为C,这对于您切换来说应该是微不足道的

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

虽然不太精通VB,但您也将其标记为C,这对于您切换来说应该是微不足道的

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

不依赖于MouseEventArgs的通用方法:

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

您还可以检查Alt、Shift….

一种不依赖于鼠标指针的通用方法:

            If My.Computer.Keyboard.CtrlKeyDown Then
                ...
            Else
                ...
            End If
您还可以检查Alt、Shift…

您可以使用常规单击事件来读取ModifierKeys,而不需要鼠标单击事件。 还要记住,Control、Shift和Alt被视为标志。若你们不使用它们作为标志,当用户点击同时按住Shift和Control的按钮时,你们不会注意到。当用户按住两个按钮时,将触发以下3个选项:

if (ModifierKeys.HasFlag(Keys.Shift))
if (ModifierKeys.HasFlag(Keys.Control))
if (ModifierKeys.HasFlag(Keys.Shift) && ModifierKeys.HasFlag(Keys.Control))
此选项仅在用户仅按住Shift键时触发:

您可以使用常规的Click事件来读取ModifierKeys,而不需要MouseClick事件。 还要记住,Control、Shift和Alt被视为标志。若你们不使用它们作为标志,当用户点击同时按住Shift和Control的按钮时,你们不会注意到。当用户按住两个按钮时,将触发以下3个选项:

if (ModifierKeys.HasFlag(Keys.Shift))
if (ModifierKeys.HasFlag(Keys.Control))
if (ModifierKeys.HasFlag(Keys.Shift) && ModifierKeys.HasFlag(Keys.Control))
此选项仅在用户仅按住Shift键时触发:


它是说控制键没有被按下,还是你没有得到任何东西?首先,e.Modifiers==Keys.control哦,等等,是VB,很抱歉我看到了c标记first@Landmine看看这个,只要用ControlNotifyIcon按钮改变班次就行了?在我看来,NotifyIcon就是NotifyIcon。另外,这个问题不应该有C标记。它是说控制键没有按下,还是你没有得到任何东西?首先,e.Modifiers==Keys.control哦,等等,它是VB,对不起,我看到了C标记first@Landmine看看这个,只要用ControlNotifyIcon按钮改变班次就行了?在我看来,NotifyIcon就是NotifyIcon。另外,这个问题不应该有C标签。太好了,谢谢。我将其标记为C,因为代码的转换正如您所说的,非常简单。谢谢你,这个很好用。很好,谢谢。我将其标记为C,因为代码的转换正如您所说的,非常简单。谢谢,这很好用。ModifierKeys不依赖MouseEventArgs。。。它来自控件,也可以为此进行更改。ModifierKeys不依赖于MouseEventArgs。。。它来自控制,也可以为此更改。