- ベストアンサー
複数フォームへのイベントの通知方法について
- Visual Basic2005にてプログラミングをしております。プログラミング初心者です。以下、どなたかご教授いただけませんでしょうか?
- あるクラスを定義し、そのクラスの1つのインスタントがイベントを出した時に、フォーム1~フォーム3の各Formにイベントを通知する様なプログラムを作成しております。
- 複数フォームへのイベントの通知方法として、以下の様なやり方は一般的に正しいのでしょうか?プログラムを実行させて見ると、動作上は何の問題もなく動いている様に見えますが、プログラミング経験が少ない事もあり、以下のやり方が本当に正しいのかどうか、あまり自信が持てません。どなたかご教授いただけると助かります。宜しくお願い致します。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは よくできていま~す。 >一般的に正しいのでしょうか? 個人的な好みや、使い方によって変わりますので、どれが正しいとは言えないと思います。 so7752 さんが、このコードを使用してみて、いいと思えばそれは非常にいい出来栄えです。 本当に一般的といえば、イベントの場合 StatusChange2(ByVal sender As System.Object, ByVal e As System.EventArgs) のようにいらないsenderを記入していたりします。 それでも、引数が1個でいいならByVal sender As System.Objectはいりませんね。 サンプルです。 Public Class Form1 Private WithEvents myInstance1 As New classA Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim f As New Form2 myInstance1.EventReport1() myInstance1.EventReport2() f.Show() End Sub Private Sub StatusChange1(ByVal sender As Object, ByVal message As Integer) Handles myInstance1.StatusChange TextBox1.Text = message End Sub Private Sub StatusChange2(ByVal sender As Object, ByVal message As String) Handles myInstance1.MassageOutput TextBox1.Text &= " " & message End Sub End Class Public Class Form2 Private WithEvents myInstance1 As New classA Private Sub f2() Handles MyBase.Shown myInstance1.EventReport2() End Sub Private Sub StatusChange(ByVal sender As Object, ByVal e As String) Handles myInstance1.MassageOutput TextBox1.Text = e.ToString End Sub End Class Public Class classA Public Event StatusChange(ByVal sender As Object, ByVal e As Integer) Public Event MassageOutput(ByVal sender As Object, ByVal e As String) Private status As Integer Public Sub EventReport1() status = 5 'statusの変更を通知するイベントを生成させる RaiseEvent StatusChange(Me, status) End Sub Public Sub EventReport2() 'メッセージを通知するイベントを生成させる RaiseEvent MassageOutput(Me, "メッセージを通知します") End Sub End Class 上記はso7752 さんの目的の動作とは違いますが、イベントで値を渡すときの基本的な記述です。
お礼
bybalsendercaseさん、ありがとうございました。少し自信が持てました。 senderについては知りませんでしたので、大変勉強になりました。 今後ともご教授いただくことがあるかと思いますが、どうぞ宜しくお願い致します。