0

我正在开发 WPF 应用程序,我想动态添加按钮。例如,我有一个循环,它添加了 5 个新按钮。

int i;

for (i = 0; i < 5; i++)
{
    Button addButton = new Button();
    addButton.Name = "addButton" + i;
    addButton.Content = "addButton" + i;
    this.devicesButtonStackPanel.Children.Add(addButton);
}

现在我在 StackPanel 中有 5 个按钮。

我需要每个按钮上的事件。

我正在尝试使用这个:

private void addButton0_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
    MessageBox.Show("test");
}

但它不起作用。

4

4 回答 4

5

创建按钮时需要绑定到事件:

Button addButton = new Button();
addButton.Name = "addButton" + i;
addButton.Content = "addButton" + i;
// Bind your handler to the MouseDoubleClick event
addButton.MouseDoubleClick += addButton0_MouseDoubleClick;
this.devicesButtonStackPanel.Children.Add(addButton);
于 2013-09-06T12:59:13.317 回答
3

您只需在代码中执行此操作

                Button addbutton = new Button();
                addbutton.Click += addButton0_MouseDoubleClick;
于 2013-09-06T12:59:03.947 回答
2

只需订阅处理程序的每个按钮

addButton.Clicked += addButton0_MouseDoubleClick;
于 2013-09-06T12:58:57.567 回答
1

您尚未将您的附加event handlerMouseDoubleClick event. 请将您的控制事件附加到事件处理程序方法,如下所示:

addButton.MouseDoubleClick += addButton0_MouseDoubleClick;

您的代码应该类似于以下代码片段:

int i;

for (i = 0; i < 5; i++)
{
    Button addButton = new Button();
    addButton.Name = "addButton" + i;
    addButton.Content = "addButton" + i;
  //Use the addition assignment operator (+=) to attach your event handler to the event.
    addButton.MouseDoubleClick += addButton0_MouseDoubleClick;
    this.devicesButtonStackPanel.Children.Add(addButton);
}

您可以使用这些按钮,如下所示:

  private void addButton0_MouseDoubleClick(object sender, MouseButtonEventArgs e)
    {
       string buttonName = ((Button)sender).Name;
       string buttonNumber = buttonName.SubString(0,buttonName.Length -1 );

       switch(buttonNumber)
       {
         case "0":
         // do work for 0
          break;
          case "1":
          // do work for 1
         break;
        } 
    }

请参阅: 如何:订阅和取消订阅事件(C# 编程指南)

于 2013-09-06T13:00:22.143 回答