KeyDownイベントからMouseUpイベントを呼び出す

タグの編集
投稿者 すすき  (社会人) 投稿日時 2021/10/18 20:06:16
VB.NET初心者です。分かる方いましたらお答えしていただけると幸いです。F1キーを押すと、配置しているButton2のMouseUpイベントを発生させたいのですが、下の****にはどのようなコードを書けばいいでしょうか?

Private Sub Form1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles MyBase.KeyPress
        Select Case e.KeyCode
            Case Keys.F1
                    ****
        End Select
    End Sub

Private Sub Button2_MouseUp(sender As Object, e As MouseEventArgs) Handles Button2.MouseUp
        MsgBox("a")
    End Sub

投稿者 るきお  (社会人) 投稿日時 2021/10/18 21:36:18
たとえば、こうですね。
(投稿された例は KeyPressにプログラムされていましたが、KeyDownの間違いだと思うのでそこは訂正しています。)

Private Sub Form1_KeyDown(sender As Object, e As KeyEventArgs) Handles MyBase.KeyDown
    Select Case e.KeyCode
        Case Keys.F1
            Button2_MouseUp(sender, Nothing)
    End Select
End Sub


一般的にはNothing の代わりに EventArgs.Empty とすることも多いようです。

しかし、イベントの捕捉(ハンドル)と処理の内容は分けて書く方が後々使いまわしがきいて何かと便利なので、私なら次のようなプログラムにします。
Private Sub Form1_KeyDown(sender As Object, e As KeyEventArgs) Handles MyBase.KeyDown
    Select Case e.KeyCode
        Case Keys.F1
            やりたい処理()
    End Select
End Sub
Private Sub Button2_MouseUp(sender As Object, e As MouseEventArgs) Handles Button2.MouseUp
    やりたい処理()
End Sub

Private Sub やりたい処理()
    MsgBox("a")
End Sub


もし、ヘルプを表示する目的であれば、HelpRequestedというイベントも使用できます。F1キーを押すと反応します。

Private Sub Form1_HelpRequested(sender As Object, hlpevent As HelpEventArgs) Handles MyBase.HelpRequested
    MsgBox("Help Requested")
End Sub


参考
https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.forms.control.helprequested?view=net-5.0
投稿者 すすき  (社会人) 投稿日時 2021/10/20 08:00:16
すすき様 参考になりました。ありがとうございました!