C# 第二个eventhandler赢了';t从按钮触发

C# 第二个eventhandler赢了';t从按钮触发,c#,asp.net,button,event-handling,imagebutton,C#,Asp.net,Button,Event Handling,Imagebutton,我有两个按钮。第一个按钮是从后面的代码中提取的。单击第一个按钮时,将绘制第二个按钮。这很好用。当我在第二个按钮被点击时添加一个事件,这个事件不会被触发。正如您在下面的代码中看到的,有一个btnTwo_click函数。如果我在这个函数上设置断点,程序甚至不会中断。是否有方法从代码隐藏(不使用java脚本)触发此事件 这是代码,我实际上在一个表中使用这个系统。但这段简单的代码最终也有同样的问题 public partial class _Default : System.Web.UI.Page {

我有两个按钮。第一个按钮是从后面的代码中提取的。单击第一个按钮时,将绘制第二个按钮。这很好用。当我在第二个按钮被点击时添加一个事件,这个事件不会被触发。正如您在下面的代码中看到的,有一个btnTwo_click函数。如果我在这个函数上设置断点,程序甚至不会中断。是否有方法从代码隐藏(不使用java脚本)触发此事件

这是代码,我实际上在一个表中使用这个系统。但这段简单的代码最终也有同样的问题

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        ImageButton btn = new ImageButton();
        btn.Command += new CommandEventHandler(btnOne_Click);
        form1.Controls.Add(btn);
    }

    void btnOne_Click(object sender, EventArgs e)
    {
        ImageButton btn = new ImageButton();
        btn.Command += new CommandEventHandler(btnTwo_Click);
        form1.Controls.Add(btn);
    }

    void btnTwo_Click(object sender, EventArgs e)
    {
        Label lblTest = new Label(); //BREAKPOINT
        form1.Controls.Add(lblTest);
    }
}

只需将这一行移动到
Page\u Load
event,它就会工作;)


您必须在页面生命周期的页面加载或页面初始化方法上添加第二个按钮:

e、 g


您是否已将此引用添加到属性事件btn_click load中?这是我所有的代码,所以我想没有。但我不明白你对这个属性的意思…是的,它不是代码,只要在UI中选择按钮并在Designer中设置事件我想我需要这样做,但我不知道button如何获得正确的对象和事件参数。(this=)“将事件附加到页面\初始化或页面\加载”
btn.Command += new CommandEventHandler(btnTwo_Click);
protected void Page_Load(object sender, EventArgs e)
{
    ImageButton btn = new ImageButton();
    btn.Command += btnOne_Click;
    form1.Controls.Add(btn);

    ImageButton btn2 = new ImageButton();
    btn2.Command += btnTwo_Click;
    btn2.Visible = false;
    form1.Controls.Add(btn2);
}

void btnOne_Click(object sender, EventArgs e)
{
    // Your second button 
    form1.Controls[2].Visible = true;
}

void btnTwo_Click(object sender, EventArgs e)
{
    ImageButton btn2 = (ImageButton)sender;
    // Do something
}