2013-05-03 124 views
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); 
    } 
} 
+0

您是否已将此引用添加到属性事件btn_click加载? – 2013-05-03 10:05:53

+0

这是我所有的代码,所以我猜不是。但我不明白你的意思是这个属性... – Freddy 2013-05-03 10:56:41

+0

是啊,它不会是代码,只需在UI中选择按钮,并在设计器中设置事件 – 2013-05-03 10:58:12

回答

1

您必须添加在页面生命周期的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 
} 
1

该行刚刚转会Page_Load事件,也将努力;)

btn.Command += new CommandEventHandler(btnTwo_Click); 
相关问题