0

イベント ハンドラーの実行シーケンスを理解するためのテスト コードがあります。シーケンスはなぜこのようなものですか?:

  1. Button1_Init
  2. Page_Init
  3. Page_Load
  4. Button1_Load
  5. Page_PreRender
  6. Button1_PreRender
  7. Button1_Unload
  8. Page_Unload

たとえば、なぜButton1_InitbeforePage_InitなのにPage_LoadbeforeなのButton1_Loadか?

テストコード:

public partial class WebForm1 : System.Web.UI.Page
    {

        protected void Page_Init(object sender, EventArgs e)
        {

        }

        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void Page_PreRender(object sender, EventArgs e)
        {

        }

        protected void Page_Disposed(object sender, EventArgs e)
        {

        }

        protected void Page_Unload(object sender, EventArgs e)
        {

        }

        protected void Button1_Init(object sender, EventArgs e)
        {

        }

        protected void Button1_Load(object sender, EventArgs e)
        {

        }

        protected void Button1_PreRender(object sender, EventArgs e)
        {

        }

        protected void Button1_Disposed(object sender, EventArgs e)
        {

        }

        protected void Button1_Unload(object sender, EventArgs e)
        {

        }
    }
4

1 に答える 1

0
  1. Page_Init は、すべてのコントロールが初期化されるときに発生し、ページがそれらを追加/使用する前にすべてのコントロールが初期化されるようにします。それ以外の場合は null 参照が発生します。

  2. 今回はページでコントロールのさまざまなプロパティを設定する必要があるため、ページのロードが最初に開始され、次にボタンのロードが開始されます。

プリレンダーでも同じことが起こります。

もう 1 つのヒント: userControl の Preinit は使用できません。コントロールがまだ存在しないため、ページでのみ使用できます。

于 2013-01-07T11:31:52.803 に答える