0

リストのアイテムごとにボタンを作成するメソッドがあります。そんな感じ:

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

ここで、ユーザーがこれらのボタンの 1 つをクリックすると、別のビューを表示したいと考えています。ただし、ボタンの識別子は同じであるため、表示されるビューは常に最後に作成されたボタン用でした。どうすれば問題を解決できますか? 何か案は?

ありがとうございました。

よろしく、マリア

4

2 に答える 2

2

ボタンのタグを使用できます。

b.Tag = p;

そしてあなたのハンドラーで:

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

そして、元の製品に応じてロジックを実行します。

編集: DataContext (WPF) を Tag (WinForms) に変更しました。

于 2012-07-27T15:07:43.877 に答える
1

このコードで試してください

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

        else if (flag == "case 1")
        {
           ....
        }
        .....
于 2012-07-27T15:03:45.120 に答える