检查并重新检查我的代码后,我无法理解为什么btnBack_Click
在我删除事件并在其中注册另一个事件后事件继续触发Page_Load
btnBack.Click -= new EventHandler(btnBack_Click);
btnBack.Click += new EventHandler(btnPreviewBack_Click);
是回传吗?是因为我没有删除OnClick
aspx上的吗?
检查并重新检查我的代码后,我无法理解为什么btnBack_Click
在我删除事件并在其中注册另一个事件后事件继续触发Page_Load
btnBack.Click -= new EventHandler(btnBack_Click);
btnBack.Click += new EventHandler(btnPreviewBack_Click);
是回传吗?是因为我没有删除OnClick
aspx上的吗?
我们无法确切地看到您在页面生命周期中的哪个位置更改Click
事件,但是,请记住,一旦生命周期开始,绝对所有(就事件处理程序更改而言)都“撤消”(尽管导致回发的事件仍将被执行)。
当回发发生时(无论是否异步),所有事件处理程序都将恢复到其原始配置。
最好的方法是将您的事件处理程序更改添加到Page_PreRender
事件中:
protected void Page_PreRender(Object sender, EventArgs e)
{
if (_MustChangeEventHandler)
{
btnBack.Click -= new EventHandler(btnBack_Click);
btnBack.Click += new EventHandler(btnPreviewBack_Click);
}
}