投稿者 hori  (社会人) 投稿日時 2023/12/15 11:59:16
昨夕から出かけてまして、いま読ませていただきました。
多くの事を教えていただき感謝いたします。ありがとうございます。

ついでにと言っては失礼なのですが
Form に TextBox を1つ貼り


    Private Sub TextBox1_KeyDown(sender As Object, e As KeyEventArgs) Handles TextBox1.KeyDown

        MsgBox("tKD")

    End Sub

    Private Sub TextBox1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox1.KeyPress

        MsgBox("tKP")

    End Sub

    Private Sub TextBox1_KeyUp(sender As Object, e As KeyEventArgs) Handles TextBox1.KeyUp

        MsgBox("tKU")

    End Sub

    Private Sub TextBox1_PreviewKeyDown(sender As Object, e As PreviewKeyDownEventArgs) Handles TextBox1.PreviewKeyDown

        MsgBox("tPKD")

    End Sub

とやって、TextBox でキー入力します。

それで出てきた MsgBox の[OKボタン]をマウスでクリックしていくと "tKU" は出てきませんが
エンターキーを押していくと最後に "tKU" が繰り返されてマウスでクリックしないと終われません。

これは、TextBox1.KeyUp が、直前に表示された MsgBox 内のキー操作に反応していると云う事でしょうか?。

ちなみに、先のフォームにラベルを張って


    Dim s As String = ""

    Private Sub TextBox1_KeyDown(sender As Object, e As KeyEventArgs) Handles TextBox1.KeyDown

        s &= "1"

        Label1.Text = s

    End Sub

    Private Sub TextBox1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox1.KeyPress

        s &= "2"

        Label1.Text = s

    End Sub

    Private Sub TextBox1_KeyUp(sender As Object, e As KeyEventArgs) Handles TextBox1.KeyUp

        s &= "3"

        Label1.Text = s

    End Sub

    Private Sub TextBox1_PreviewKeyDown(sender As Object, e As PreviewKeyDownEventArgs) Handles TextBox1.PreviewKeyDown

        s &= "4"

        Label1.Text = s

    End Sub

とやると、ラベルには "4123" と表示されるので、KeyUp も動いているようなのですが
だったら何故マウスクリックで行った場合に、"tKU" が出てこないのでしょう?。

そう云う仕様なのだと云う事なのでしょうが、
どういう場合に使う事を想定して設計されたのか僕の頭では読めません。
こんな場合に使えるよと云うのがあったらご伝授いただけませんか?

今のところ、KeyUp は使わなくても済んでいるのでスルーしていただいて結構です。
けれど、なるほどと思えたらちょっと嬉しいです。