C#,form1中初始化form2,然后在form2中怎么点击按钮后在form1中panel内添加自定义控件?
没怎么提问过,好像分数不高,多谢大神指点。。。 展开
简单测试过,望采纳。
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);
}
}
/*-------------------------------*/
命名没什么关系,我个人习惯是以UC开头
form1下添加了GetUserControlList方法,用于访问添加UserControl1
在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();
纯手打,大小写问题望自己修改。