日期:2014-05-18  浏览次数:20835 次

如何克隆panel及子控件的事件,求助!!!
在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不能用吗?)

------解决方案--------------------
何更有效的添加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,可以使用匿名委托:
C# code
newBtn.Click += new EventHandler(delegate(Object sender1,EventArgs e1)
{
    button1.PerformClick();
});