【发布时间】:2011-04-03 21:06:45
【问题描述】:
首先,我需要一种方法来知道控制键何时按下,这是链接:Form keyDown not working?
感谢他们,我得到了它的工作。但我注意到这不是我的最终目标! 我不想在 keyDown 上检查控制键,而是在 keyPress 上检查它。但显然我不能使用
If e.Control Then
End If
在
Private Sub Form1_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles MyBase.KeyPress
End Sub
方法。
有什么想法吗?我还想检查何时不再按下该键...
新问题:
Private Sub controlTick(ByVal sender As Object, ByVal e As EventArgs)
If Control.ModifierKeys = Keys.Control Then
controlActivated = True
PictureBox2.Invalidate()
End If
If Control.ModifierKeys <> Keys.Control Then
controlActivated = False
PictureBox2.Invalidate()
End If
Label1.Text = controlActivated
End Sub
那是在一个计时器里面。出于某种原因,它总是“假”,除非我在按下控制键的情况下单击某处...
【问题讨论】:
-
最好只说你想要达到的目标以及你试图实现的目标。我不确定您所写的内容是否了解关键事件(没有双关语),试试这个msdn.microsoft.com/en-us/library/… 您也可以过滤“较低”级别的 Windows 消息事件。您也可以通过直接询问来获取密钥的状态,尽管您可能需要 pinvoke pinvoke.net/default.aspx/user32.getasynckeystate
标签: vb.net winforms visual-studio