2013-05-02 120 views
1

我的程序動態地創建按鈕。C#創建動態按鈕和onClick動態事件處理程序

private void CreateButton(string buttonName) 
{ 

    Color[] c = { Color.Red, Color.Teal, Color.Blue, Color.WhiteSmoke }; 

    transbutton = new Button(); 
    transbutton.BackColor = c[2]; 
    transbutton.Text = buttonName; 
    transbutton.Name = buttonName + "Button"; 
    transbutton.Width = 150; 
    transbutton.Height = 150; 
    transbutton.Font = new Font("Segoe UI", 13); 
    transbutton.ForeColor = Color.White; 

    transbutton.Click += new EventHandler(transbutton_Click); 
} 

private void transbutton_Click(object sender, EventArgs e) 
{ 

    tbList.Text = transbutton.Text; 
} 

enter image description here

我所試圖做的是,當用戶點擊該按鈕(一個或多個),它增加了一鍵進入多行TextBox的名稱,如在上面的圖片。我創建了一個EventHandler,但不知道如何使它與動態按鈕一起工作。

+0

你將你的按鈕在屏幕/形式的價值? (我沒有在你的代碼中看到一個電話) – gunr2171 2013-05-02 20:41:09

回答

6

您有一個參考,即作爲sender參數點擊的按鈕。所以......

private void transbutton_Click(object sender, EventArgs e) 
    { 
     tbList.Text += "\r\n" + ((Button)sender).Text; 
    } 
+1

這很好。謝謝。 – Apollo 2013-05-02 20:42:51

+1

它適用於任何引發事件的事件(例如所有窗口和Web控件)。 'sender'參數始終是觸發事件的對象,因此您可以始終將其轉換爲其原始類型並使用其屬性;) – Renan 2013-05-02 20:46:30

0

使用按鈕配置像this.it將創建3個動態按鈕bcoz^h變量有3

public void button_Click(object sender, EventArgs e) 
{ 
if(sender == buttonArray[0]) 
    { 


    MessageBox.Show("hello"); 
    } 

} 

private void button1_Click(object sender, EventArgs e) 
{ 

    int h =3; 


    Button[] buttonArray = new Button[8]; 

    for (int i = 0; i <= h-1; i++) 
    { 
     buttonArray[i] = new Button(); 
     buttonArray[i].Size = new Size(20, 43); 
     buttonArray[i].Name= ""+i+""; 
     buttonArray[i].Click += button_Click;//function 
     buttonArray[i].Location = new Point(40, 20 + (i * 20)); 
     panel1.Controls.Add(buttonArray[i]); 

    } 
} 
相關問題