C# 如何区分按钮单击事件
我有个问题。我正在通过C#使一些wpf按钮动态。我正在为此使用一个循环,现在我正在尝试查找所有按钮单击事件。 我发现它,但它的所有工作按钮点击相同 我怎样才能区分所有的按钮 提前谢谢 沙申克C# 如何区分按钮单击事件,c#,wpf,button,C#,Wpf,Button,我有个问题。我正在通过C#使一些wpf按钮动态。我正在为此使用一个循环,现在我正在尝试查找所有按钮单击事件。 我发现它,但它的所有工作按钮点击相同 我怎样才能区分所有的按钮 提前谢谢 沙申克 `for(int i=0;i
`for(int i=0;i<2;i++)
{
按钮b1=新按钮();
//此注册表名(“myAnimatedBrush”,b1);
b1.Name=“button”+i;
b1.高度=200;
b1.宽度=200;
b1.余量=新厚度(0,-100,0,0);
b1.水平对齐=水平对齐。左;
b1.Content=“英语”;
b1.Background=System.Windows.Media.brusks.Pink;
b1.单击+=新建路由EventHandler(b1_单击);
儿童画布添加(b1);
画布.左置(b1,b1.宽度*i);
}`
&这样的事情可能会奏效
protected void HandleBtnClick(object sender, EventArgs args)
{
Button btn = sender as Button;
if(btn==null){
return; //This is not expected.
}
if(btn.Name=="button1")
{
DoFirstTask();
}
else if (btn.Name == "button2")
{
DoSecondTask();
}
...
}
我的两分钱:
如果希望在循环中创建的按钮都有不同的行为,请思考按钮本身的不同之处,并进行检查。例如:
- 如果每个按钮都是从不同的数据项生成的,则设置其DataContext并使用它来查找原始数据项
- 如果每个按钮都已编号,请将DataContext设置为按钮编号
- 如果每个按钮具有不同的含义,请将单击设置为不同的事件处理程序。您可以创建这些元素的数组。或者将不同的对象作为CommandParameter附加到每个按钮
for(int i=0; 0<10; i++)
{
var btn = new Button
{
DataContext = i,
Height = 200, Width = 200,
Margin=new Thickness(0, 100, 0 0),
});
btn.Click += (sender, e) =>
{
MessageBox.Show("You clicked button " + ((Button)sender).DataContext);
};
dockPanel.Children.Add(btn); // Or you could use Canvas & Canvas.SetLeft
}
for(int i=0;0
{
Show(“您单击了按钮”+((按钮)sender.DataContext);
};
dockPanel.Children.Add(btn);//或者您可以使用Canvas&Canvas.SetLeft
}
我建议您强烈考虑使用DokPad而不是画布,除非您需要最终用户的任意定位(拖放)。,Canvas几乎从来都不是要使用的右面板。如果你使用DockPanel,你不必设置左坐标,它会自动为你设置左坐标。
我想你把咖啡洒在键盘上了。哎哟!真是一场噩梦。SHASHANK将按钮命名为“button1”,等等,这是个糟糕的主意(它们不需要名称)。嵌套的“If()”这样的名字更糟糕。至少让它成为一个switch()。如果你处理btn==null,它应该抛出一个异常而不仅仅是返回!我会采取完全不同的策略,鼓励SHASHANK采用更好的设计,让他在用户将看到的东西(颜色、内容等)上有所区别。 protected void HandleBtnClick(object sender, EventArgs args)
{
Button btn = sender as Button;
if(btn==null){
return; //This is not expected.
}
if(btn.Name=="button1")
{
DoFirstTask();
}
else if (btn.Name == "button2")
{
DoSecondTask();
}
...
}
for(int i=0; 0<10; i++)
{
var btn = new Button
{
DataContext = i,
Height = 200, Width = 200,
Margin=new Thickness(0, 100, 0 0),
});
btn.Click += (sender, e) =>
{
MessageBox.Show("You clicked button " + ((Button)sender).DataContext);
};
dockPanel.Children.Add(btn); // Or you could use Canvas & Canvas.SetLeft
}