C# 如何分配点击事件
我有一个在运行时动态生成的按钮数组。我的代码中有按钮点击功能,但我找不到在代码中设置按钮点击名称的方法。所以 XAML的等效代码是什么:C# 如何分配点击事件,c#,wpf,xaml,event-handling,C#,Wpf,Xaml,Event Handling,我有一个在运行时动态生成的按钮数组。我的代码中有按钮点击功能,但我找不到在代码中设置按钮点击名称的方法。所以 XAML的等效代码是什么: <Button x:Name="btn1" Click="btn1_Click"> 下面应该可以做到这一点: btn.Click += btn1_Click; //示例C# public void populateButtons() { int XPO; int yPos; Random ranNum=新
<Button x:Name="btn1" Click="btn1_Click">
下面应该可以做到这一点:
btn.Click += btn1_Click;
//示例C#
public void populateButtons()
{
int XPO;
int yPos;
Random ranNum=新的Random();
对于(int i=0;i<50;i++)
{
按钮foo=新按钮();
Style buttonStyle=Window.Resources[“CurvedButton”]作为样式;
int sizeValue=ranNum.Next(50);
foo.Width=sizeValue;
foo.Height=sizeValue;
foo.Name=“button”+i;
xPos=ranNum.Next(300);
yPos=ranNum.Next(200);
foo.HorizontalAlignment=HorizontalAlignment.Left;
foo.VerticalAlignment=VerticalAlignment.Top;
foo.Margin=新厚度(xPos,yPos,0,0);
foo.Style=按钮样式;
foo.Click+=新建RoutedEventHandler(按钮单击);
LayoutRoot.Children.Add(foo);
}
}
私有无效按钮单击(对象发送者,事件参数)
{
//做点什么或者。。。
点击按钮=(按钮)发送者;
MessageBox.Show(“按钮的名称是:“+单击的.name”);
}
我认为WPF不支持您试图实现的目标,即使用方法名称或btn1将方法分配给按钮。Click=“btn1\u Click”。您必须使用上述答案中建议的方法,即使用适当的方法注册按钮点击事件
btn1.点击+=btn1\U点击 你应该把它放在线的下面
btn.Click = btn.Click + btn1_Click;
为什么它使用
+=
?按钮是否包含多个单击事件?@user189728这是事件
系统在.NET中的工作方式,您可以为任何事件订阅多个“处理程序”。您几乎可以将事件视为一个重写了+=
运算符的类,它本质上是向队列追加一个回调。是的,任何事件都可以有多个处理程序(如果您想这样想,可以使用函数回调)
Button btn = new Button();
btn.Name = "btn1";
btn.Click += btn1_Click;
private void btn1_Click(object sender, RoutedEventArgs e)
{
// do something
}
// sample C#
public void populateButtons()
{
int xPos;
int yPos;
Random ranNum = new Random();
for (int i = 0; i < 50; i++)
{
Button foo = new Button();
Style buttonStyle = Window.Resources["CurvedButton"] as Style;
int sizeValue = ranNum.Next(50);
foo.Width = sizeValue;
foo.Height = sizeValue;
foo.Name = "button" + i;
xPos = ranNum.Next(300);
yPos = ranNum.Next(200);
foo.HorizontalAlignment = HorizontalAlignment.Left;
foo.VerticalAlignment = VerticalAlignment.Top;
foo.Margin = new Thickness(xPos, yPos, 0, 0);
foo.Style = buttonStyle;
foo.Click += new RoutedEventHandler(buttonClick);
LayoutRoot.Children.Add(foo);
}
}
private void buttonClick(object sender, EventArgs e)
{
//do something or...
Button clicked = (Button) sender;
MessageBox.Show("Button's name is: " + clicked.Name);
}
btn.Click = btn.Click + btn1_Click;