2014-01-06 2 views
1

Я хочу создать событие, нажмите на (2 кнопки создается во время выполнения)Как добавить событие на контроль, созданный во время выполнения

Я использую это для создания кнопки:

private void Form1_Load(object sender, EventArgs e) 
{ 
    for (int k = 0; k < 2; k++) 
    { 
     Button Btn = new Button(); 
     Btn.Name = "btn" + k; 
     Btn.Location = new System.Drawing.Point(20 + (k *110), 60 + (20 * j) * 2); 
     Btn.Size = new System.Drawing.Size(90, 30); 
     if (k == 0)    
      Btn.Text = "Back"; 

     else 
      Btn.Text = "Calculate"; 

     this.Controls.Add(Btn); 
    } 
} 

Спасибо Advance.

ответ

2

Повысьте петлю, как это:

for (int k = 0; k < 2; k++) 
{ 
    Button Btn = new Button(); 
    Btn.Name = "btn" + k; 
    Btn.Location = new System.Drawing.Point(20 + (k *110), 60 + (20 * j) * 2); 
    Btn.Size = new System.Drawing.Size(90, 30); 
    if (k == 0)    
     Btn.Text = "Back"; 

    else 
     Btn.Text = "Calculate"; 

    Btn.Click += button_Click; // <-- This is where it happens! 

    this.Controls.Add(Btn); 
} 

Затем добавить обработчик событий:

private void button_Click(object sender, EventArgs e) 
{ 
    Button btn = sender as Button; 
    if (btn.Name.Equals("...")) 
    { 
    } 
    else 
    { 
    }  
} 

Обратите внимание, что в обработчике события, вы должны решить, какая кнопка была нажата, глядя на Name Недвижимость.

+0

Вот что я хочу :) Спасибо –

+0

Нет проблем ;-) Кстати, эквивалент «Это то, что я хочу», чтобы отметить мой ответ принят :-) –

2

Просто используйте:

Btn.Click += button1_Click; 

private void button1_Click(object sender, EventArgs e) 
{ 

} 
+0

это говорит 'Имя'Btn 'не существует в текущем контексте' –

+0

@UzairAli Он должен быть внутри цикла for. прямо перед 'this.Controls.Add (Btn);' line – i3arnon

+0

Его работа Но проблема в том, что обе кнопки используют одно и то же событие (Back and Calculate) –

1

Как это

btn1.Click += new EventHandler(this.btn1_Click); 
1
Btn.Click += Btn_Click; 

void Btn_Click(object sender, EventArgs e) 
{ 
    throw new NotImplementedException(); 
} 

в VS можно ввести Btn.Click += вкладку дважды нажмите и он будет генерировать метод для вас.

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