2016-01-18 3 views
1

Я хотел бы отличить каждый обработчик события.Обработчик событий WinForm Button (динамический)

(у меня есть только один в моем коде ниже. Я имею в виду динамический обработчик будет лучшим, но, любой вид обходные будет тоже хорошо.)

Пожалуйста, помогите мне.

Спасибо!

List<Button> VuttonList = new List<Button>(); 
    private void Form1_Load(object sender, EventArgs e) 
    { 
     Button Vutton; 
     int Kount = 10; 
     for (int i = 0; i < Kount ; i++) 
     { 
      Vutton = new Button(); 
      Vutton.Text = (i + 1).ToString() ; 
      Vutton.Location = new Point(10, 24 * (i + 1)); 
      Controls.Add(Vutton); 
      Vutton.Click += new EventHandler(Kommon); 
      VuttonList.Add(Vutton); 
     } 
    } 

    private void Kommon(object sender, EventArgs e) 
    { 
     MessageBox.Show( sender.ToString()); 
    } 
+1

Достаточно одного обработчика событий, вы можете отправить отправителя на кнопку «Button», и таким образом вы знаете, какая кнопка была нажата. Также вы можете установить свойство «Name» кнопок при их создании или присвоить им свойство «Tag» и использовать его позже. –

+0

Единственный уникальный идентификатор, который вы дали кнопке, - это свойства текста и местоположения, поэтому те, которые вы должны найти в своем списке. Вы также можете использовать свойство Name также и, возможно, использовать словарь вместо списка. – LarsTech

+0

@RezaAghaei Спасибо за ваш комментарий. Но мне нужно различать, вот в чем вопрос моего вопроса. – Jason

ответ

1

Один обработчик событий достаточно, вы можете привести отправителя к Button и таким образом, вы знаете, какая кнопка была нажата. Также вы можете установить свойство кнопок Name при их создании или присвоить Tag свойству собственности и использовать его позже.

for (int i = 0; i < Kount ; i++) 
{ 
    Vutton = new Button(); 
    //...set properties 
    //Also add Name: 
    Vutton.Name = string.Format("Vutton{0}", i); 
    //Also you can add Tag 
    Vutton.Tag = i; 
    Controls.Add(Vutton); 
    Vutton.Click += new EventHandler(Kommon); 
    //... other stuff 
} 

Затем вы можете использовать свойства кнопки таким образом:

private void Kommon(object sender, EventArgs e) 
{ 
    var button = sender as Button; 
    //You can use button.Name or (int)button.Tag and ... 
    MessageBox.Show(button.Name); 
} 

Также макет ваши кнопки, вы можете использовать FlowLayoutPanel или TableLayoutPanel.

+0

Oh. Хорошо. Работает отлично. – Jason

+0

Итак, вот почему вы сказали. Один обработчик событий достаточно хорош. Теперь я понял. Благодарю. очень. много. – Jason

+1

Да, добро пожаловать :) –