Обработчик событий кнопки WinForm (динамический)
Я хотел бы выделить каждого из обработчиков событий.
(У меня есть только один в моем коде ниже. Я имею в виду, что динамический обработчик будет лучшим, но любые обходные пути тоже подойдут.)
Пожалуйста, помогите мне.
Спасибо!
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
свойство их и использовать позже.
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
,