カスタムイベント

カスタムコントロールにイベントを追加したいときの書き方

以下の例では、TextBox を継承したユーザーコントロールを作成して、イベント MyOriginalEvent を定義するコードです。
TextBox に入力した文字列の長さが3になった時に、イベントが起動します。

using System;

namespace SandBox
{
    public delegate void MyTextBoxEventHandler(object sender, EventArgs e);

    public class MyTextBox : TextBox
    {
        public event MyTextBoxEventHandler MyOriginalEvent;

        protected virtual void OnMyOriginalEvent(EventArgs e)
        {
            MyTextBoxEventHandler handler = MyOriginalEvent;
            if (handler != null)
            {
                handler(this, e);
            }
        }

        protected override void OnTextChanged(EventArgs e)
        {
            if (this.Text.Length == 3)
            {
                OnMyOriginalEvent(new EventArgs());
            }
            base.OnTextChanged(e);
        }

    }
}