Event の基礎

C# のイベント(事象)呼び出しの基礎です。

前田稔(Maeda Minoru)の超初心者のプログラム入門

プログラムの作成

  1. Windows Program はイベントドリブン(イベント駆動型)のプログラミングスタイルを採用しています。
    処理はイベント毎に分割して記述され、必要に応じて呼びだされて処理されます。
    このページではイベント呼び出しの基礎を Console Mode のプログラムで説明しましょう。
  2. まず最初にプログラムを作成して動かしてみて下さい。
    イベント機能をテストするサンプルプログラム(Console.cs)の全ソースコードです。
    Console.ReadLine(); は画面表示を確認するために追加したコードです。
    プロジェクトの作成方法は Hello C# を参照して下さい。
    /*************************************************/
    /*★ イベント機能のテストプログラム    前田 稔 ★*/
    /*************************************************/
    using System;
    
    public delegate void TestDelegate(object sender, EventArgs e);
    class Class1
    {
        public event TestDelegate eventDelegate;
        public void handler( object o, EventArgs e )
        {
            Console.WriteLine("handler called");
        }
        static void Main()
        {
            Class1 class1 = new Class1();
            class1.eventDelegate += new TestDelegate(class1.handler);
            class1.eventDelegate( class1, EventArgs.Empty );
            //Console.ReadLine();
        }
    } 
    

プログラムの説明

  1. デリゲート(delegate)機能を用いて、イベントで用いるメソッドを定義します。
    イベントで起動するハンドラの引数は、標準的な使い方では object と EventArgs を受け取ります。
    public delegate void TestDelegate(object sender, EventArgs e);
    delegate のプログラムは Delegate の基礎 を参照して下さい。
  2. event キーワードを使って、イベントで起動されるデリゲートを関連付けます。
    public event TestDelegate eventDelegate;
  3. イベント呼び出しでデリゲートを通じて実行されるハンドラ(メソッド)を定義します。
        public void handler( object o, EventArgs e )
        {
            Console.WriteLine("handler called");
        }
        
  4. Class1 を生成(インスタンス化)して、ハンドラ(handler メソッド)をイベントに登録します。
        Class1 class1 = new Class1();
        class1.eventDelegate += new TestDelegate(class1.handler);
        
  5. 実際にイベントを呼び出します。
    今回は EventArgs を使わないので、空の引数(EventArgs.Empty)を渡します。
    class1.eventDelegate( class1, EventArgs.Empty );

超初心者のプログラム入門(C# Frame Work)