C# 从代码隐藏中删除事件处理程序

C# 从代码隐藏中删除事件处理程序,c#,asp.net,.net,event-handling,C#,Asp.net,.net,Event Handling,我有一个像这样的asp.net下拉列表 <asp:DropDownList ID="ddLevel" runat="server" Width="95%" AutoPostBack="True" OnSelectedIndexChanged="ddYear_SelectedIndexChanged"> 它不起作用。然后,我试着 ddLevel.SelectedIndexChanged -=new EventHandler(ddYear_SelectedIndexChanged);

我有一个像这样的asp.net下拉列表

<asp:DropDownList ID="ddLevel" runat="server" Width="95%" AutoPostBack="True" OnSelectedIndexChanged="ddYear_SelectedIndexChanged">
它不起作用。然后,我试着

ddLevel.SelectedIndexChanged -=new EventHandler(ddYear_SelectedIndexChanged);
但它们都不起作用。当我检查页面的源代码时,仍然可以看到onchange事件


我检查了这两个链接,然后。我不明白我做错了什么。我想知道是否有其他方法可以做到这一点。原因是我在
Page\u Load
事件中执行此操作吗?

如果下面的
Page\u Load
事件取消订阅,请确保在
Page\u Load
事件的该点之后,不会再次执行事件订阅

ddLevel.SelectedIndexChanged -=ddYear_SelectedIndexChanged;

您必须删除事件处理程序的原因是什么?如果您没有删除事件处理程序,您可以在事件处理程序本身中添加一个条件,用于检查是否应该执行代码。很抱歉,回复太晚。我在页面源中看到了onchange,因为我的下拉列表autopostback设置为true。行ddLevel.SelectedIndexChanged-=ddYear\u SelectedIndexChanged会从下拉列表中删除事件处理程序。但是当页面重新加载事件处理程序再次被添加并触发SelectedIndexChanged事件。有没有办法避免这种不必要的行为?@shreesha:那么,我猜是问题出在哪里了。停止再次添加。@ChrithJ但事件处理程序位于my.aspx页面中。因此每次重新加载页面时,都会再次添加事件处理程序。是否需要在后端c#代码中动态添加事件处理程序,或者是否有其他方法?@shreesha:仅当页面加载中IsPostback false时才添加事件处理程序。
ddLevel.SelectedIndexChanged -=ddYear_SelectedIndexChanged;