当用户按住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
答案 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事件。
还要记住,Control
,Shift
和Alt
被视为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)