在按钮上分配和取消分配事件

时间:2013-02-04 14:16:21

标签: c# asp.net

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

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

2 个答案:

答案 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 
}