WinForm 按钮事件处理程序(动态)
WinForm Button Event Handler (Dynamic)
我想区分每个事件处理程序。
(我在下面的代码中只有一个。我的意思是动态处理程序将是最好的,但是,任何一种变通方法都可以。)
请帮帮我。
谢谢!
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() );
}
一个事件处理程序就足够了,您可以将发送者转换为 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
来布置按钮。
我想区分每个事件处理程序。
(我在下面的代码中只有一个。我的意思是动态处理程序将是最好的,但是,任何一种变通方法都可以。)
请帮帮我。
谢谢!
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() );
}
一个事件处理程序就足够了,您可以将发送者转换为 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
来布置按钮。