C# クラスにカスタム・イベントの実装

2009/11/10 18:19Update
TAGS: イベント | カスタム | C#

クラスにカスタム・イベントの実装手順

まずButtonクラスの標準イベントClickの使い方から見てみます。

例えば、ボタンのClickイベントをあるメソッドで処理する場合、
以下のように記述します。
//ボタンの定義
private System.Windows.Forms.Button buttonExit;
...

//Clickイベント処理メソッド 宣言
//ClickはButtonのイベントです
this.buttonExit.Click += new System.EventHandler(this.buttonExit_Click);
...


//Clickイベント処理メソッド 定義
private void buttonExit_Click(object sender, EventArgs e)
{
    //イベント処理ここで
}


自前のクラスにイベントを実装するには、どうしたらいいですか?
早速調べてみました、Visual Studio デベロッパー センターMSDNに以下の記事を発見!

方法 : クラスにイベントを実装する

C#、Visual Basicなどの言語でクラスにイベントを実装する方法について説明しています!

以下は、C#の場合のイベント実装について簡単に説明します。
※Visual Basicも同じような感じで

1)カスタムイベントの定義


  例:
        public event EventHandler MyEventHappen;


2)Onイベント名という名前のメソッドの実装


  例:
        protected virtual void OnMyEventHappen(EventArgs e)
        {
            if (MyEventHappen != null)
                MyEventHappen(this, e);
        }


3)カスタム イベントの発生


  例(あるボタン押下時):
      protected void buttonAdd_Click(object sender, EventArgs e)
        {
            OnMyEventHappen(new EventArgs());
        }


  例(ビジネス処理時):
      protected void buttonAdd_Click(object sender, EventArgs e)
        {
            if (... == 0)
                OnMyEventHappen(new EventArgs());
        }


これで、カスタムイベントの定義は完了です。

4)カスタムイベントの処理


  イベントが発生した時、何のメソッドで処理させるかを定義します。
  例:
    MyClass myClass = ...;
    ...

  myClass.MyEventHappen += new System.EventHandler(this.someFunction);

    private void someFunction(object sender, EventArgs e)
    {
        MyClass myClass = (MyClass)sender;
        ...
    }

.

有关作者
Syboos.jp編集長システム設計や開発、保守運営などを行ってます。オープンソース技術に興味があります。

Sponsored Link


Comments