2013-05-02 3 views
1

Моя программа создает кнопки динамически.C# Создание динамических кнопок и onClick Динамические EventHandlers

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

ответ

6

У вас есть ссылка на кнопку, которая была нажата прямо здесь, как аргумент sender. Так что ...

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

Это сработало отлично. Благодарю. – Apollo

+1

Он работает со всем, что вызывает событие (например, все окна и веб-элементы управления). Аргумент 'sender' - это всегда объект, который запустил событие, поэтому вы всегда можете отнести его к исходному типу и использовать его свойства;) – Renan

0

использование кнопки массив как this.it создаст 3 динамические кнопки bcoz переменная ч имеет значение 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]); 

    } 
} 
Смежные вопросы