1

当用户按住 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
4

3 回答 3

5

A generic method not reliant on MouseEventArgs:

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

You can also check for Alt, Shift....

于 2013-07-24T19:15:08.117 回答
5

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

private void Form1_MouseClick(object sender, MouseEventArgs e) {
    if (Control.ModifierKeys == Keys.Control) {
        Console.WriteLine("Ctrl+Click");
    }
}
于 2013-07-24T16:41:37.037 回答
0

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

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

此选项仅在用户仅持有Shift密钥时触发:

if (ModifierKeys == Keys.Shift)
于 2019-08-12T11:52:30.007 回答