在检查并重新检查我的代码后,我无法理解为什么btnBack_Click
事件在我删除事件并在Page_Load
btnBack.Click -= new EventHandler(btnBack_Click);
btnBack.Click += new EventHandler(btnPreviewBack_Click);
是回发吗?是因为我没有删除aspx上的OnClick
吗?
答案 0 :(得分:3)
我们无法确切地看到Page Lifecycle您要更改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);
}
}