SwD*_*n81 34
尼克所说的是你的两个选择(你应该能够运行这个代码并看到两个选项):
public Form1()
{
InitializeComponent();
for (int i = 0; i < 5; i++)
{
Button button = new Button();
button.Location = new Point(20, 30 * i + 10);
switch (i)
{
case 0:
button.Click += new EventHandler(ButtonClick);
break;
case 1:
button.Click += new EventHandler(ButtonClick2);
break;
//...
}
this.Controls.Add(button);
}
for (int i = 0; i < 5; i++)
{
Button button = new Button();
button.Location = new Point(160, 30 * i + 10);
button.Click += new EventHandler(ButtonClickOneEvent);
button.Tag = i;
this.Controls.Add(button);
}
}
void ButtonClick(object sender, EventArgs e)
{
// First Button Clicked
}
void ButtonClick2(object sender, EventArgs e)
{
// Second Button Clicked
}
void ButtonClickOneEvent(object sender, EventArgs e)
{
Button button = sender as Button;
if (button != null)
{
// now you know the button that was clicked
switch ((int)button.Tag)
{
case 0:
// First Button Clicked
break;
case 1:
// Second Button Clicked
break;
// ...
}
}
}
Run Code Online (Sandbox Code Playgroud)
我假设你在循环中并做这样的事情?
Button newButton = new Button();
newButton.Click += new EventHandler(newButton_Clicked);
Run Code Online (Sandbox Code Playgroud)
您正在为所有按钮注册相同的方法.每个按钮都需要单独的方法.或者,您可以为每个按钮分配不同的标识属性,并在处理程序中检查哪个按钮是发件人.
从那里你可以采取适当的行动.
| 归档时间: |
|
| 查看次数: |
61503 次 |
| 最近记录: |