1

我正忙于将新事件分配给在设计器中创建的现有按钮。

现在这是在运行时之前创建的按钮,它位于 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

任何想法可能导致这种情况?

这与页面生命周期有关吗?

--EDIT-- 我应该让你知道 btnAddAccount_Click 确实被执行了。

基本上我不会创建相同的 modalpopupextender,我想使用现有的,但根据用户选择将确定应该调用哪个事件处理程序,在这种情况下,btnAccount_Click 已选择要分配给按钮的 btnCancel_Click。

4

2 回答 2

1

ASP.NET 不会在任何地方为服务器端按钮分配 Click 事件。这些按钮被呈现为普通的提交按钮,后面的内部代码正在检查提交的值,然后基于它找到“点击”按钮并调用正确的处理程序。

这意味着您当前的逻辑正在走向死胡同。

而不是弄乱事件,btnClose_Click作为处理程序,并在那里检查当前活动/可见的弹出窗口并将其隐藏。

于 2013-02-04T14:33:54.223 回答
0

我不太确定您到底在问什么,但是您可以Handles在事件中添加一个,从而控制按钮上的事件。就像是:

protected void btnCancel_Click(object sender, EventArgs e) Handles btnCancel.Click, btnClose.Click
{
    //do stuff 
}
于 2013-02-04T14:19:43.160 回答