已删除的事件处理程序在回发期间继续触发
本文关键字:继续 删除 事件处理 程序 | 更新日期: 2023-09-27 18:11:32
在检查和重新检查我的代码后,我无法理解为什么btnBack_Click
事件在我删除事件并在Page_Load
中注册另一个事件后继续触发
btnBack.Click -= new EventHandler(btnBack_Click);
btnBack.Click += new EventHandler(btnPreviewBack_Click);
是回发吗?是因为我没有把aspx上的OnClick
取下来吗?
我们无法确切地看到在您的页面生命周期中您正在更改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);
}
}