2012-09-28 123 views
1

我想將事件附加到在運行時生成的單擊按鈕。直到這一點,我寫了代碼,但不能將按鈕的ID傳遞給方法。這裏是我的代碼將事件附加到動態創建的按鈕單擊

此代碼沒有通過任何錯誤,另一個問題是點擊事件後控件被沖走。如何防止這一點?

protected void Button1_Click(object sender, EventArgs e) 
    { 
    int i = int.Parse(TextBox1.Text); 
    for (int x = 1; x <= i; x++) 
    { 
     Button b = new Button(); 
     b.ID = "btn_" + x.ToString(); 
     b.Text = "btn_" + x.ToString(); 
     b.Click += new System.EventHandler(myEventHandler); 
     pnlHolder.Controls.Add(b); 
    } 
    } 

private void myEventHandler(object sender, EventArgs e) 
{ 
    txtMain.Text = sender.ToString(); // I want to know which button was pressed 
} 

回答

2

嘗試,

txtMain.Text = (sender as Button).Name; 

txtMain.Text = (sender as Button).Text; 
+1

**發件人爲按鈕**只是喜歡它(:+1 – Sourav

2

試試這個

private void myEventHandler(object sender, EventArgs e) 
{ 
    Button b = (Button) sender; 
    txtMain.Text = b.ID; 
    // 
    txtMain.Text = b.Text; 

    if(b.ID == "button1") 
    doThis(); 
    else if(b.ID == "button2") 
    doThat(); 
} 
+0

謝謝,+ 1,btw可以幫助我處理另一個問題嗎?[回發後刪除控件] – Sourav

+0

Asp.net不像窗體形式。控件狀態在回發時丟失。這就是爲什麼ASP.Net使用ViewState記住通過設計或標記添加的控件。您需要將按鈕作爲ViewState的一部分,或者在每次刷新頁面時重新創建它們 – codingbiz

相關問題