0

我正在搜索如何检测是否释放了控制键而不释放其他键(在文本框中)。这是我到目前为止提出的:

Private Sub TextBox1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyUp
    If e.KeyCode = 17 Then
        GetTick = System.Environment.TickCount
    End If
End Sub

这项工作也可以在 Ctrl+c 等组合键中触发...
用什么替换 17?

4

2 回答 2

0

我有一段时间没有使用 VB,但这里有一些东西可能会对你有所帮助。您可以尝试创建一个布尔变量(真假),称为 ctrl 或类似的东西。在第一次按下控制键时将其设为真,然后在他们按下控制键时将其设为假。然后,您可以创建另一个变量来存储所有称为 keycodes 的键码或其他东西。当按下除控件之外的键时,将键码设为 -1。这是一些示例代码:

    Dim kys=-1
Dim ctrl=false
Private Sub TextBox1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyUp
    if e.KeyValue = Keys.Control then
        ctrl=false
    else
        kys=-1
    end if
End Sub
Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
    if e.KeyValue = Keys.Control then
        ctrl=true
    else
        kys=e.getKeyValue
    end if
    'Control c
    if ctrl=true & kys=Keys.c then
        MsgBox("It Worked!")
    end if
End Sub

顺便说一句,对于这样的事情,e.KeyValue 通常比 e.keyCode 更好,它更容易使用,因为您可以只使用“Keys”而不是查找所有键码。

于 2012-12-11T01:49:20.313 回答
0

您是否尝试过 e.Control,如下所示:

Private Sub TextBox1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyUp
     If e.Control Then
        GetTick = System.Environment.TickCount
     End If
End Sub

改编自: http: //www.devcurry.com/2009/10/detecting-ctrl-and-shift-keys-on-form.html

于 2012-12-11T01:30:28.400 回答