StripButton
から継承するクラスがありLabel
ます。onClick
メソッドをオーバーライドしました。このクラスのユーザーは、イベントも に割り当てますonClick eventhandler
。オーバーライドされたメソッドが最後に起動されることに気付きました。オーバーライドされたメソッドが最初に起動するようにします。どうやってやるの?
1 に答える
1
ハンドラーのメソッドがUserControl で呼び出されるとClick
、フォームの StripButtonのハンドラーが起動します。そのため、ハンドラー コードがフォームで実行される前にUserControl のコードを実行する場合は、UserControl のハンドラーで最後に呼び出します。逆に、ユーザー コントロールのコードの後にフォームのコードを実行する場合は、ユーザー コントロールのハンドラーで最初に呼び出します。base.OnClick
OnClick
OnClick
Click
base.OnClick
OnClick
Click
OnClick
base.OnClick
OnClick
最も単純な例で説明するのがおそらく最も簡単です。
// Your UserControl.
class StripButton : Label
{
protected override void OnClick(EventArgs e) {
Console.WriteLine("This runs before the Click handler on the parent form.");
base.OnClick(e);
Console.WriteLine("This runs after the Click handler on the parent form.");
}
}
// On your form.
private void stripButton1_Click(object sender, EventArgs e) {
Console.WriteLine("stripButton1_Click on form");
}
これを実行すると、出力ウィンドウに次のように表示されます。
This runs before the Click handler on the parent form.
stripButton1_Click on form
This runs after the Click handler on the parent form.
うまくいけば、それはあなたの質問に答えます。
于 2013-07-20T07:01:59.260 に答える