|
|
連載
改訂版
プロフェッショナルVB.NETプログラミング
Chapter 12 イベント
株式会社ピーデー
川俣 晶
2004/08/05 |
|
|
イベントは、VB.NET言語のイベント機能によって発生される。この機能は、システムがブラック・ボックスとして行うものではなく、一般のプログラマーが新しいイベントを定義することも容易にできるようになっている。以下は自作イベントを記述したサンプル・プログラムである。フォーム上にボタンを1個配置してから、リスト12-18のようにコードを編集する。
1: Public Class SampleEventArgs
2: Inherits System.EventArgs
3: Public msg As String
4: End Class
5:
6: Public Class SampleClass
7: Public Event Sample(ByVal sender As Object, ByVal e As SampleEventArgs)
8: Public Sub InvokeEvent()
9: Dim args As New SampleEventArgs()
10: args.msg = "Hello!"
11: RaiseEvent Sample(Me, args)
12: End Sub
13: End Class
14:
15: Public Class Form1
16: Inherits System.Windows.Forms.Form
17:
18: …Windows フォーム デザイナで生成されたコード…
19:
20: Private WithEvents instance As New SampleClass()
21: Private Sub SampleEventHandler(ByVal sender As System.Object, ByVal e As SampleEventArgs) Handles instance.Sample
22: MsgBox("SampleEventHandler called: " + e.msg)
23: End Sub
24:
25: Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
26: instance.InvokeEvent()
27: End Sub
28: End Class
|
|
リスト12-18 新しいイベントを定義しているプログラム(VB.NETでフォームに1つのボタンを配置しておく必要あり)
|
これを実行すると以下のようになる。
 |
●図12-19 リスト12-18の実行結果 |
ここでボタンを押すと、以下のようなメッセージ・ボックスが表示される。
 |
●図12-20 Button1ボタンを押した場合に表示されるメッセージ・ボックス |
このコードは、6〜13行目のSampleClassクラスの中で発生するイベントを、21〜23行目のSampleEventHandlerクラスで受け取るようになっている。イベントの本体は、7行目で定義されており、Event宣言を用いて、Sampleという名前のイベントを定義している。イベントは必ず引数が2個になる。最初の引数はSystem.Object型、2番目の引数はSystem.EventArgs型か、それを継承したクラスでなければならない。ここでは、第2引数として、独自のSampleEventArgsクラスを1〜4行目で定義している。
イベントを発生させる機能は、8〜12行目のInvokeEventメソッド内に記述している。ここでポイントになるのは、11行目のRaiseEventステートメントである。これがイベントを発生させる機能を持っている。
さて、SampleClassを利用するように、15〜28行目のForm1クラスを記述している。イベントは、ボタンが押されたときに発生するように25〜27行目のクリックイベントを記述している。そして、イベントを受け取る側は、21〜23行目のSampleEventHandlerメソッドである。Handlesキーワードの後に、インスタンス変数名とイベント名が記述されて、このイベントを受け取ることを明示している。20行目のSampleClassクラスのインスタンスを収める変数にはWithEventsキーワードが付いて、イベントを発生させることを示さなければならない。
この例では、ボタンを押したときにイベントを発生させるように組んでいるので、独自のイベントを作成する意義が分りにくいかもしれない。しかし、自作のイベントは、本来は独自のタイミングで発生させるものである。そのようなイベントが必要とされたときに、役に立つ機能といえるだろう。
『VB6プログラマーのための入門 Visual Basic .NET 独習講座』
本記事は、(株)技術評論社が発行する書籍『VB6 プログラマーのための 入門 Visual Basic .NET 独習講座』から許可を得て転載したものです。
【本連載と書籍の関係について 】
この書籍は、本フォーラムで連載した「連載 プロフェッショナルVB.NETプログラミング」を大幅に加筆修正し、発行されたものです。技術評論社、および著者である川俣晶氏のご好意により、書籍の内容を本フォーラムの連載記事として掲載させていただけることになりました。
→技術評論社の解説ページ
ご注文はこちらから
|
業務アプリInsider 記事ランキング
本日
月間