2012-07-27 176 views
0

我有一个方法为我的列表中的每个项目创建一个按钮。类似的东西:动态按钮EventArgs点击

foreach (Product p in productsList) 
{ 
    b = new Button(); 
    b.Name = p.Name; 
    b.Tag = p.Name; 
    b.Text = p.Name; 
    b.Size = new Size(93, 23); 
    b.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowOnly; 
    b.AutoSize = true; 
    b.Click += new System.EventHandler(this.b_Click); 

    this.ProdutosFlowPanel.Controls.Add(b); 
} 

现在,当用户cliks其中一个按钮我想显示一个不同的视图。但按钮具有相同的标识符,所以显示的视图总是用于创建的按钮。 我该如何解决我的问题?有任何想法吗?

谢谢。

最好的问候, 玛丽亚

回答

1

尝试使用此代码

protected void Submit_Click(object sender, EventArgs e) 
    { 
     var flag = ((Button)sender).Text; 
     if (flag == "case 1") 
     { 
      .... 
     } 

     else if (flag == "case 1") 
     { 
      .... 
     } 
     ..... 
2

您可以用按钮标签:

b.Tag = p; 

而在你的处理程序:

Product p = ((Product)((Button)sender).Tag); 

然后根据原始产品做逻辑。

编辑:将DataContext(WPF)更改为标记(WinForms)。

+0

如果将'DataContext'更改为'Tag'(OP使用Winforms),则为+1。 – Tergiver 2012-07-27 19:33:41

+0

完成,谢谢。 – Zak 2012-07-28 03:45:24