連載

改訂版
プロフェッショナルVB.NETプログラミング

Chapter 12 イベント

株式会社ピーデー 川俣 晶
2004/08/05
Page1 Page2 Page3


 本記事は、(株)技術評論社が発行する書籍『VB6プログラマーのための入門 Visual Basic .NET 独習講座』の一部分を許可を得て転載したものです。同書籍に関する詳しい情報については、本記事の最後に掲載しています。

自家製のイベント

 イベントは、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キーワードが付いて、イベントを発生させることを示さなければならない。

 この例では、ボタンを押したときにイベントを発生させるように組んでいるので、独自のイベントを作成する意義が分りにくいかもしれない。しかし、自作のイベントは、本来は独自のタイミングで発生させるものである。そのようなイベントが必要とされたときに、役に立つ機能といえるだろう。End of Article

『VB6プログラマーのための入門 Visual Basic .NET 独習講座』

 本記事は、(株)技術評論社が発行する書籍『VB6 プログラマーのための 入門 Visual Basic .NET 独習講座』から許可を得て転載したものです。

【本連載と書籍の関係について 】
 この書籍は、本フォーラムで連載した「連載 プロフェッショナルVB.NETプログラミング」を大幅に加筆修正し、発行されたものです。技術評論社、および著者である川俣晶氏のご好意により、書籍の内容を本フォーラムの連載記事として掲載させていただけることになりました。

技術評論社の解説ページ

ご注文はこちらから
 

 INDEX
  [連載] 改訂版 プロフェッショナルVB.NETプログラミング
  Chapter 12 イベント
    1.イベントを処理する/複数のイベント・ハンドラ/複数のイベントを1つのイベント・ハンドラで処理する
    2.イベントの発生源を識別する/イベントの付加情報を得る
  3.自家製のイベント
 
「改訂版 プロフェッショナルVB.NETプログラミング 」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)
- PR -

注目のテーマ

業務アプリInsider 記事ランキング

本日 月間
ソリューションFLASH