2

カスタムコントロールを作成しています。ホイールを再発明し、UserControlクラスから派生したカスタムButtonコントロールを作成しているとしましょう(例のみ)

もちろん、Clickイベントハンドラーがあります。今私の問題は、いつこのイベントハンドラーを呼び出すのですか?Pages OnLoadとOnLoadCompleteの間で発生することは知っていますが、Click他の制御イベントと同時に発生するように、どのイベントに接続できるかはよくわかりません。

カスタムコントロールイベントをいつ呼び出すと思いますか?

4

2 に答える 2

2

一般に、根本的なイベントが発生したことがわかったらすぐにイベントを発生させる必要があります。

たとえば、ASP.NETボタンコントロールは、使用によってクリックされたことをどのように認識しますか?IPostBackEventHandlerとRaisePostBackEvent()メソッドを実装します。コントロールに関連付けられたポストバックイベントデータがある場合、そのメソッドが呼び出されます。関連付けは、レンダリングされる「名前」属性によって決定されると思います。次に、RaisePostBackEvent()でClickイベントを発生させます。

あなたが答える必要がある質問は次のとおりです:あなたのコントロールはそれがそのイベントを起こすべきであることをどのように知っていますか?あなたが私たちの残りが簡単であることがわかったら。

コントロールに既存のASP.NETコントロールとの類似点がある場合は、ASP.NETソースコードをステップ実行して、それらのコントロールがどのように機能するかを確認することをお勧めします。

于 2010-01-22T00:09:31.563 に答える
1

を実装するIPostbackEventHandlerと、逆コンパイルから取得したこのようなことができますSystem.Web.Ui.WebControls.Button

protected virtual void RaisePostBackEvent(string eventArgument)
{
    base.ValidateEvent(this.UniqueID, eventArgument);
    if (this.CausesValidation)
    {
        this.Page.Validate(this.ValidationGroup);
    }
    this.OnClick(EventArgs.Empty);
    this.OnCommand(new CommandEventArgs(this.CommandName, this.CommandArgument));
}
于 2010-01-22T00:35:03.143 に答える