0

我有 2 个按钮。第一个按钮是从后面的代码中提取的。单击第一个按钮时,将绘制第二个按钮。这完美地工作。当我在单击第二个按钮时添加事件时,不会触发此事件。正如您在下面的代码中看到的,有一个 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);
    }
}
4

2 回答 2

1

您必须在 Page 生命周期的 Page_Load 或 Page_Init 方法上添加第二个按钮:

例如

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
}
于 2013-05-03T11:55:25.763 回答
1

只需将此行移至Page_Load事件,它就会起作用;)

btn.Command += new CommandEventHandler(btnTwo_Click);
于 2013-05-03T11:14:03.437 回答