我正忙于将新事件分配给在设计器中创建的现有按钮。
现在这里是在运行时之前创建的按钮,它位于modalpopupexteder5中 -
<asp:Button runat="server" ID="btnClose" Text="Close" OnClick="btnClose_Click" />
这是代码隐藏 -
protected void btnAddAccount_Click(object sender, EventArgs e)
{
btnClose.Click -= new EventHandler(btnClose_Click);
btnClose.Click += new EventHandler(btnCancel_Click);
ModalPopupExtender5.Show();
}
protected void btnCancel_Click(object sender, EventArgs e)
{
ModalPopupExtender11.Hide();
}
protected void btnClose_Click(object sender, EventArgs e)
{
ModalPopupExtender5.Hide();
}
因此,开头的按钮将事件btnClose_Click连接到它。但我想将其更改为btnCancel_Click
但它不会执行btnCancel_Click。它执行原始的btnClose_Click
任何想法可能导致什么?
这是否与页面生命周期有关?
- 编辑 - 我应该让你知道btnAddAccount_Click确实被执行了。
基本上我不创建相同的modalpopupextender,我想使用现有的modalpopupextender但是根据用户的选择将决定应该调用哪个eventhandler,在这种情况下,btnAccount_Click选择了btnCancel_Click来分配给按钮。
答案 0 :(得分:1)
ASP.NET没有为服务器端按钮分配Click事件。这些按钮呈现为普通的提交按钮,后面的内部代码是检查提交的值,然后根据它找到“单击”按钮并调用正确的处理程序。
这意味着你当前的逻辑导致死路一条。
不要弄乱事件,而是将btnClose_Click
作为处理程序,并在其中检查当前活动/可见的弹出窗口并隐藏它。
答案 1 :(得分:0)
我不太清楚你究竟在问什么,但你可以为你的活动添加一个Handles
,从而控制按钮上的事件。
类似的东西:
protected void btnCancel_Click(object sender, EventArgs e) Handles btnCancel.Click, btnClose.Click
{
//do stuff
}