C# WinForm按钮事件处理程序(动态)
我想区分每个事件处理程序 (我下面的代码中只有一个。我的意思是,动态处理程序将是最好的,但是,任何一种变通方法都可以。) 请帮帮我 谢谢C# WinForm按钮事件处理程序(动态),c#,winforms,button,eventhandler,C#,Winforms,Button,Eventhandler,我想区分每个事件处理程序 (我下面的代码中只有一个。我的意思是,动态处理程序将是最好的,但是,任何一种变通方法都可以。) 请帮帮我 谢谢 List<Button> VuttonList = new List<Button>(); private void Form1_Load(object sender, EventArgs e) { Button Vutton; int Kount = 10; fo
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() );
}
List VuttonList=new List();
私有void Form1\u加载(对象发送方、事件参数e)
{
钮扣洞;
int Kount=10;
for(int i=0;i
一个事件处理程序就足够了,您可以将发送者强制转换为按钮,这样您就知道单击了哪个按钮。此外,您还可以在创建按钮时设置按钮的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
}
此外,要布局按钮,您可以使用
FlowLayoutPanel
或TableLayoutPanel
一个事件处理程序就足够了,您可以将发送者强制转换为按钮
,这样您就知道单击了哪个按钮。您还可以在创建按钮时设置按钮的Name
属性,或者为按钮指定Tag
属性,以便以后使用。您为按钮指定的唯一唯一标识是文本和位置属性,因此必须在列表中找到这些属性。您也可以使用Name属性,也可以使用字典而不是列表。@RezaAghaei谢谢您的评论。但是,我确实需要区分,这是我问题的重点。@LarsTech谢谢。嗯。。这应该是个好建议。我来试试看。我怎么能分辨出它的名字呢?这样地?“MessageBox.Show(发件人.姓名);”噢。好。很好,所以你才这么说。一个事件处理程序就足够了。现在我明白了。谢谢非常更多信息。这应该是另一个好消息。我甚至不知道它们的存在。再次感谢。
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);
}