Vb.net 表单按键帮助

Vb.net 表单按键帮助,vb.net,winforms,visual-studio,Vb.net,Winforms,Visual Studio,首先,我需要一种方法来知道控制键何时按下,下面是链接: 多亏了他们,我才得以工作。但我注意到这不是我的最终目标! 我不想在keyDown上检查控制键,而是想在keyPress上检查它。但显然我不能用 If e.Control Then End If 在 Private Sub Form1_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Hand

首先,我需要一种方法来知道控制键何时按下,下面是链接:

多亏了他们,我才得以工作。但我注意到这不是我的最终目标! 我不想在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
Private Sub-controlTick(ByVal发送方作为对象,ByVal e作为事件参数)
如果Control.ModifierKeys=Keys.Control,则
controlActivated=True
PictureBox2.Invalidate()
如果结束
如果Control.ModifierKeys.Control,则
controlActivated=False
PictureBox2.Invalidate()
如果结束
Label1.Text=controlActivated
端接头

那是在计时器里。由于某些原因,它总是“False”,除非我在按下控制键的情况下单击某个位置…

当您获得按键事件时,您不会在窗体有任何控件时看到该事件,控制键状态已应用于按下的键。比如说,你会得到Ctrl+V:

Private Sub Form1_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles MyBase.KeyPress
    If e.KeyChar = ChrW(22) Then
        MessageBox.Show("Ctrl+V pressed")
    End If
End Sub
Ctrl+A=1,等等,通过Ctrl+Z=26。这很可能是您要执行的操作,您还可以使用Control.ModifierKeys属性:

    If Control.ModifierKeys = Keys.Control Then
        MessageBox.Show("Control key pressed")
    End If
请注意,许多键不会生成按键事件,如Ctrl+F1。需要按下键来测试它们


您应该在任何操作中使用Control.ModifierKeys,该操作应受到控制键是否关闭的影响。此计时器的勾号事件处理程序工作正常:

Private Sub timer1_Tick(ByVal sender As Object, ByVal e As EventArgs) Handles Timer1.Tick
    Dim controlActivated As Boolean
    If (Control.ModifierKeys And Keys.Control) = Keys.Control Then
        controlActivated = True
    End If
    Label1.Text = controlActivated.ToString()
End Sub

最好只说你正在努力实现的目标以及你已经尝试实现的目标。我不确定你是否理解关键事件(没有双关语),试试这个,你也可以过滤“较低”级别的windows消息事件。您也可以通过直接询问来获得按键的状态,尽管您可能需要pinvoke,但我所需要的只是知道何时按下控制键(仅控制键)。你看,我的用户经常点击界面,如果用户按下control键,我想创建一个不同的效果。在任何受键是否按下影响的代码中使用control.ModifierKeys。请勿使用按键事件。谢谢!但现在我有一个小问题。。。编辑了问题的底部。我会再给这一次机会,发布更新。祝你好运。我想知道。。。检查是否未按下控制键是否正确?如果Control.ModifierKeys.Control