在panel1中有两个combobox,分别是combobox1和combobox2,还有一个删除按钮DelBtn,在panel1外(即窗体中)有一个添加按钮AppendBtn。当我点击AppendBtn时,在panel1下添加一个panel2,panel2克隆于panel1,只是位置在panel1下方,再点击AppendBtn时,在panel2下添加一个panel3……当点击panel中的DelBtn时,删除该panel。不知道我说清楚了没,大致和邮箱中添加附件的方式相同,不过我这里是winform的。望各位大神帮帮忙,最好能给出具体点的代码。使用控件遍历添加的方法我知道,panel也没有clone的方法,使用panel2=panel1的方法只相当于将panel1改名叫panel2,至于使用反射的方法我就不清楚如何实现了。这有几个关键问题:1、如何更有效的添加panel及其中的控件   2、如何添加每个panel中删除按钮的click事件(newBtn.Click+=new EventHandler((sender1,e1) => {button1.PerformClick()});该表达方法在VS05不能用吗?)

解决方案 »

  1.   

    何更有效的添加panel及其中的控件直接 new 一个新的 Panel 出来就可以了(不需要Panel2,重用Panel1):
    Panel1 p1 = new Panel1();
    p1.Name = "p1";
    p1.Top = 0;
    Controls.Add(p1);
    Panel1 p2 = new Panel1();
    p2.Name = "p2";
    p2.Top = p1.Height + 20;
    Controls.Add(p2);C#2.0不支持Lambda,可以使用匿名委托:
    newBtn.Click += new EventHandler(delegate(Object sender1,EventArgs e1)
    {
        button1.PerformClick();
    });
      

  2.   

    Panel1 p1 = new Panel1();
    p1.Name = "p1";
    p1.Top = 0;
    Controls.Add(p1);
    Panel1 p2 = new Panel1();
    p2.Name = "p2";
    p2.Top = p1.Height + 20;
    Controls.Add(p2);Panel1是一个实例了,怎么能当做类来new呢?难道在VS10可以?望大神继续指点
      

  3.   

    将Panel1封装为一个用户控件。
      

  4.   

    新建-用户控件,叫Panel1把Panel1拷贝、粘贴过来。
      

  5.   

    用的是C# Winform没有用户控件 等大神