Web検索はbingがおすすめ!

コンポーネントにイベントを追加する (イベントウィンドウへの独自のイベント項目の追加) - C#

コンポーネントにイベントを追加するコードを紹介します。

概要

コンポーネント選択時に表示されるイベントウィンドウに独自のイベントを追加する方法を紹介します。

イベントの追加

コンポーネントのクラスにイベントを追加します。

コード例

以下のコードを実装します。コンポーネントクラスのVisualComponentにOnSimpleイベントを追加します。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WinformVisualComponent
{
  public partial class VisualComponent : Control
  { 
    public delegate void SimpleDelegate();
    private SimpleDelegate onSimple;

    public event SimpleDelegate OnSimple
    {
      add
      {
        //onSimple = (SimpleDelegate)Delegate.Combine(onSimple, value);
        onSimple += value;
      }
      remove
      {
        //onSimple = (SimpleDelegate)Delegate.Remove(onSimple, value);
        onSimple -= value;
      }
    }

    public VisualComponent()
    {
      InitializeComponent();
    }

    public VisualComponent(IContainer container)
    {
      container.Add(this);
      InitializeComponent();
    }
  }
}

解説

  public delegate void SimpleDelegate();
にて、イベントのメソッドの型を定義します。今回は戻り値なし、引数なしとしました。

 private SimpleDelegate onSimple;
イベントのメソッドを格納する変数を宣言します。

  public event SimpleDelegate OnSimple
  {
    add
    {
      //onSimple = (SimpleDelegate)Delegate.Combine(onSimple, value);
      onSimple += value;
    }
    remove
    {
      //onSimple = (SimpleDelegate)Delegate.Remove(onSimple, value);
      onSimple -= value;
    }
  }
コンポーネントクラスにイベントを追加します。イベントの場合はaddとremoveブロックを実装します。
onSimple = (SimpleDelegate)Delegate.Combine(onSimple, value);
onSimple += value;
の2種類のコードを記載していますが、どちらを用いても同じ動作になります。

実行結果

コンポーネントをビルドし、フォームデザイナに配置します。コンポーネントをクリックして選択しイベントウィンドウの表示内容を確認します。イベント一覧にコンポーネントクラスで実装したOnSimpleイベントが追加されています。


補足
コンポーネント内からイベントハンドラを実行するコードはこちらの記事を参照してください。
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
掲載日: 2011-11-16
iPentec all rights reserverd.