我正在搜索如何检测是否释放了控制键,而没有释放其他键(在文本框中)。 这是我到目前为止所得到的:
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?
答案 0 :(得分: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
答案 1 :(得分:0)
我有一段时间没有使用VB,但这里有一些可能对你有用的东西。 您可以尝试创建一个布尔变量(true false),称为ctrl或类似的东西。首次按下控制键时将其设为true,然后在按下键时将其设为false。然后你可以创建另一个变量来存储所有称为密钥代码的密钥代码。按下除控件以外的键时,键控代码为-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”而不是查找所有的密钥代码。