Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何分配点击事件_C#_Wpf_Xaml_Event Handling - Fatal编程技术网

C# 如何分配点击事件

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=新

我有一个在运行时动态生成的按钮数组。我的代码中有按钮点击功能,但我找不到在代码中设置按钮点击名称的方法。所以

XAML的等效代码是什么:

<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;