カスタムコントロールにイベントを追加したいときの書き方
以下の例では、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);
}
}
}