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

怎么把一个窗体加载到另外一个窗体中(前辈指教)
如题;也不知道问的整部正规;我是C#的初学者;
  我建立了两个窗体;Form1和Form2.在Form1中有几个控件;其Enable设置为False;
      在Form2中有一个button;我就是想同过单击Form2中的button;使Form1中几个控件
            的Enable属性值变成True;据说要把Form1加载到Form2中;谢谢各位

------解决方案--------------------
用事件

在Form2中

public delegate void BtnClickEventHandler(object sender, EventArgs e);
public event BtnClickEventHandler OnBtnClick;

然后, 在Form2中的button Click中

private void button_Click(object sender, EventArgs e)
{
if(OnBtnClick != null)
{
OnBtnClick(sender, e);
}
}

再之后就是在Form1中接这个Event啦, 在Form1的Constructor中

protected Form2 frm2;
public Form1(Form2 frm2)
{
this.frm2 = frm2;
this.frm2.OnBtnClick += new EventArgs(frm2_OnBtnClick);
}

private void frm2_OnBtnClick(object sender, EventArgs e)
{
//Do anything you want to do
}
------解决方案--------------------
在Form2 中定义一个Form1变量,设置成属性
private Form1 frm;
public Form1 Form1
{
set{this.frm = value;}
}
然后在Form1 实例化Form2的地方加上
Form2 frm2 = new Form2();
frm2.Form1 = this;
frm2.Show();

接下来只要在Form1定义一个public 的方法负责改属性就好了
public void aaa(bool flag)
{
xxxx.Enable = flag;
}
------解决方案--------------------
假设将Form2要显示在Form1的Pannel中

Form2 F2= new Form2();
F2.TopLevel = False
Form1.Pannel.Controls.Add(F2)
F2.show()

实际上就是把Form2当作Form1的控件用了
=====================
------解决方案--------------------
Form2 form = new Form2();
form.FormBorderStyle = FormBorderStyle.None;
form.TopLevel = false;
this.panel1.Controls.Add(form);
form.Show();