1

Windowsフォームのパネルに動的にコントロールを生成しました。また、コントロールを削除するためのボタンも生成しました。コントロールはラインコード上にあります。

    int c = 0;
    private void button1_Click(object sender, EventArgs e)
    {
        int v;
        v = c++;
        panel1.VerticalScroll.Value = VerticalScroll.Minimum;
        ComboBox combo = new ComboBox();
        combo.Name = "combobox" + v ;
        combo.Location = new Point(30, 5 + (30 * v));

        ComboBox combo2 = new ComboBox();
        combo2.Name = "combobox2" + v ;
        combo2.Location = new Point(170, 5 + (30 * v));

        TextBox txt = new TextBox();
        txt.Name = "txtbx" + v;
        txt.Location = new Point(300, 5 + (30 * v));

        TextBox txt2 = new TextBox();
        txt2.Name = "txtbx2" + v;
        txt2.Location = new Point(450, 5 + (30 * v));

        TextBox txt3 = new TextBox();
        txt3.Name = "txtbx3" + v;
        txt3.Location = new Point(600, 5 + (30 * v));

        Button btn = new Button();
        btn.Name = "btn" + v;
        btn.Text = "Remove";
        btn.Location = new Point(750, 5 + (30 * v));



        panel1.Controls.Add(combo);
        panel1.Controls.Add(btn);
        panel1.Controls.Add(txt);
        panel1.Controls.Add(combo2);
        panel1.Controls.Add(txt2);
        panel1.Controls.Add(txt3);
        btn.Click += new EventHandler(btn_Click);

    }
    private void btn_Click(object sender, EventArgs e)
    {

        // what i have to write here for removing only the textbox and combobox and  button itself to be removed only the controls which are  aside the button

    }

テキストボックスとコンボボックスのみを削除するためのボタンクリックイベントに書き込む必要があるものと、ボタン以外のボタン以外のコントロールを削除するためのボタン自体は、その影響を受けないようにする必要があります。

4

2 に答える 2

2
foreach(var item in panel1.Controls)
{

    if(item is TextBox || item is ComboBox)
    {
          panel1.Controls.Remove(item);
    }


}

または、以下でこれを試すこともできます。

 var list = (from object item in panel1.Controls where item is TextBox || item is ComboBox select item as Control).ToList();

            list.ForEach(x => panel1.Controls.Remove(x));
于 2012-12-14T15:31:37.890 に答える
1

含まれている要素内で名前によるコントロールを見つける必要があります。

これは、開発するフレームワークによって異なります。C#はあまり役に立ちません;)

その後、あなたはそれを削除することができます

SomeParentElement.Comtrols.Remove(SomeElement)
于 2012-12-14T15:34:07.347 に答える