Vb.net 在WinForm中按住ctrl键并单击按钮时运行?
当用户按住ctrl键并单击Notify图标时,我试图运行另一个代码 我的代码不起作用,但我觉得它清楚地解释了我在做什么。这是在鼠标单击事件下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
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。。。它来自控制,也可以为此更改。