問題が単純であることはわかっていますが、コードの何が問題なのかわかりません。この Head First C# の本を持っていて、コードを VB.NET に変換しました。フォームのボタンをクリックすると、クラスのcatches
サブルーチンが呼び出されることを期待していました。Pitcher
しかし、何も起こりません。
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim myBall As New Ball
Dim pitcher As New Pitcher
myBall.OnBallInPlay(New BallEventArgs(10, 20))
End Sub
End Class
Public Class Ball
Public Event BallInPlay(ByVal sender As Object, ByVal e As BallEventArgs)
Public Sub OnBallInPlay(ByVal e As BallEventArgs)
RaiseEvent BallInPlay(Me, e)
End Sub
End Class
Public Class BallEventArgs
Inherits EventArgs
Dim trajectory As Integer
Dim distance As Integer
Public Sub New(ByVal trajectory As Integer, ByVal distance As Integer)
Me.trajectory = trajectory
Me.distance = distance
End Sub
End Class
Public Class Pitcher
Public WithEvents mySender As Ball
Public Sub catches(ByVal sender As Object, ByVal e As EventArgs) Handles mySender.BallInPlay
MessageBox.Show("Pitcher: ""I catched the ball!""")
End Sub
End Class
を呼び出した後Ball.OnBallInPlay
、Pitcher.catches
リッスンします。それとも、明らかで重要な何かを見逃していますか?