2013-05-03 88 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); 
相關問題