カスタムコントロールでのイベント処理(コーディングの仕方)の扱い方についてなのですが、
TextBoxを継承したカスタムコントロールで、Enterイベント時にカスタムコントロールによる
処理がある、カスタムコントロールがあるとします。
今までは、Enterイベントのハンドラを登録し、ハンドラ内に必要なコーディングをしていた
のですが、
public partial class CustomControl : TextBox
{
public CustomControl()
{
this.Enter += new System.EventHandler(this.CustomControl_Enter);
}
private void CustomControl_Enter(object sender, EventArgs e)
{
// CustomControlによる処理
}
}
このカスタムコントロールをFormに貼り付け、その貼り付けたカスタムコントロールでも
Enterイベントで処理をする場合、
public partial class Form1 : Form
{
public Form1()
{
CustomControl this.customControl1 = new CustomControl();
this.customControl1.Enter += new System.EventHandler(this.customControl1_Enter);
}
private void customControl1_Enter(object sender, EventArgs e)
{
// Formに貼り付けたCustomControlでの処理
}
}
「CustomControlによる処理」、「Formに貼り付けたCustomControlでの処理」の実行される順番が
どうでも良い時は、別段これでもよかったのですが、この処理される順番を制御しようとすると、
public partial class CustomControl : TextBox
{
protected override void OnEnter(EventArgs e)
{
// CustomControlによる処理(先に処理)
base.OnEnter(e);
// CustomControlによる処理(後で処理)
}
}
の様に、カスタムコントロールのOnEnterメソッドをOverrideする事になるかと思うのですが。
それで、お聞きしたいのは、カスタムコントロール内で、イベントによる処理をコーディングする場合、
イベントハンドラを登録するのではなく、初めから、OnXXX(今回の例では「OnEnter」)をOverrideして
そこにコーディングするのが本来なのでしょうか?
毎度、妙な質問ばかりですが、皆様のご意見お聞かせ願えませんでしょうか。
宜しくお願い致します。