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

次のように、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 に答える
0

私はしばらく VB を使用していませんが、役に立つかもしれないものをいくつか紹介します。ctrl などと呼ばれるブール変数 (true false) を作成してみることができます。コントロールキーが最初に押されたときに 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 よりも優れています。すべてのキーコードを検索する代わりに「キー」を使用できるため、使いやすいです。

于 2012-12-11T01:49:20.313 に答える