2013-05-02 121 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]); 

    } 
} 
相关问题