作品:
protected void Page_Load(object sender, EventArgs e)
{
myButton.Click += new EventHandler(myButton_Click);
}
動作しません:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
myButton.Click += new EventHandler(myButton_Click);
}
}
さて、2番目の例で私が期待したのは、イベントハンドラーがポストバックではない場合(つまり、ページが最初に読み込まれたとき)にのみボタンに接続され、その後、ポストバックではボタンが実行されなくなることでした。イベントに関連付けられたメソッド。そうではないようです---最初のロード(ポストバックではない)から、ボタンをクリックしても何も起こりません。
私の疑惑は、これがページのライフサイクルに関連しているということです---しかし、これがどこに該当するのかはよくわかりません。私が正しく理解していれば、イベントに関連付けられたメソッドは、ページがポストバックされた後に実行されます(ページが最初に読み込まれたときにクリックした場合でも)が、イベントをメソッドに接続することを指します。関連するメソッドの実際の実行ではなく、EventHandlerデリゲート。
注:これは純粋に舞台裏で何が起こっているのかをよりよく理解するための試みであり、現実世界の問題を解決するための試みではありません。