投稿者 るきお  (社会人) 投稿日時 2009/8/21 22:02:45
るしぇさんにすっかり先を越されてしまいました。
私も今回始めて気がつきましたが、確かにマウスでButtonをクリックするとMouseEventArgsが渡されるんですね。VB2005で確認しました。

Private Sub Button1_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles Button1.Click

    Dim mouseE As MouseEventArgs

    mouseE = DirectCast(e, MouseEventArgs)

    MsgBox(mouseE.Location.ToString)

End Sub


でも、るしぇさんご指摘のようにスペースキーなどでクリックした場合は、EventArgsが渡されます。

これを利用してマウスでクリックしたときと、そうでない場合の場合わけを実装して、さらにクリックしたときのマウスの座標を利用してなどと昔なら思ったかもしれませんが、VB2008以降ではButtonにはMouseClickイベントがあるのでClickイベントで頑張る必要はなさそうですね。

他にもイベントの発生の仕方によって引数の型が変わるイベントがあるのではないかと予想しますが、知っているものはないです。