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

本文关键字:分配 按钮 事件 取消 | 更新日期: 2023-09-27 17:57:37

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

现在是运行时之前创建的按钮,它位于modalpopupextender5-中

<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

有什么想法吗?

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

--编辑--我应该让你知道btAdddAccount_Click确实被执行了。

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

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

ASP.NET没有为服务器端按钮的任何位置分配Click事件。这些按钮被呈现为普通的提交按钮,后面的内部代码检查提交的值,然后在此基础上找到"单击"的按钮并调用正确的处理程序。

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

与其干扰事件,不如让btnClose_Click作为处理程序,并在其中检查当前活动/可见的弹出窗口并将其隐藏。

我不太确定您到底在问什么,但您可以将Handles添加到事件中,从而控制按钮上的事件。类似于:

protected void btnCancel_Click(object sender, EventArgs e) Handles btnCancel.Click, btnClose.Click
{
    //do stuff 
}