简单测试过,望采纳。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
var aForm = new Form2(this);
aForm.ShowDialog();
}
public void AddUserControl(UserControl1 pUserControl1)
{
pUserControl1.Top = this.panel1.Controls.Count*pUserControl1.Height;
this.panel1.Controls.Add(pUserControl1);
}
}
/**--------------------------------------------------------------/
public partial class Form2 : Form
{
private Form1 _Form1;
public Form2(Form1 pForm1)
{
InitializeComponent();
_Form1 = pForm1;
}
private void button1_Click(object sender, EventArgs e)
{
var aUserControl1 = new UserControl1();
_Form1.AddUserControl(aUserControl1);
}
}
/*-------------------------------*/
在form2窗体类外声明一个委托
public delegate void AddUserControlEventHandler(userControl userControl)
在类里声明一个委托成员变量:
public AddUserControlEventHandler AddUserControl;
在form2 窗体的button的点击事件里加入:
UserControl uc=new UserControl;
AddUserControl(uc);
在form1窗体的类里加入方法:
private void panelAddControl(userControl userControl)
{
panel.Controls.Add(userControl);
}
实例化form2时写法如下:
Form2 f2=new Form2();
f2.AddUserControl=new AddUserControlEventHandler(panelAddControl);
f2.show();
纯手打,大小写问题望自己修改。
在实例化form2时将form1的实例通过参数传递给form2,同时设置from1中的panel的某个属性(具体叫什么忘记了)为public(不然无法操作)