假如我在不修改父窗体的前堤下,我要把另一个窗体设成该窗体的子窗体,要如何设? public void Goods(Form owner, GlobalService globalService, string systemCode, string functionCode)
{
Goods f = new ToGoods();
f.GlobalService = globalService;
f.SystemCode = systemCode;
f.FuncCode = functionCode;
f.MdiParent = owner;
f.Show();
}
//Form owner 参数就是设置Goods父窗体的参数,
我现在在Goods 中打开一个新的体New,我要把这个新的窗体New的父窗体也设成和Goods 的父窗体一样(传递Form owner参数给New),要怎么写代码呢?
{
Goods f = new ToGoods();
f.GlobalService = globalService;
f.SystemCode = systemCode;
f.FuncCode = functionCode;
f.MdiParent = owner;
f.Show();
}
//Form owner 参数就是设置Goods父窗体的参数,
我现在在Goods 中打开一个新的体New,我要把这个新的窗体New的父窗体也设成和Goods 的父窗体一样(传递Form owner参数给New),要怎么写代码呢?
f.Owner = owner;
f.show();
如果不是MDI容器,此问题无解。(或许经过一系列复杂的API调用可以实现)注:
父窗体(Parent)与所有者(Owner)是不同概念。
Child包含在Parent内部,移动时不能超出Parent。
Owned显示保持在Owner前面,移动时可以超出Parent。
在子窗体打开之前,会调用此函数
public void Goods(Form owner, GlobalService globalService, string systemCode, string functionCode)
{
Goods f = new ToGoods();
f.GlobalService = globalService;
f.SystemCode = systemCode;
f.FuncCode = functionCode;
f.MdiParent = owner;
f.Show();
}
//f.MdiParent = owner; 句就已经设置 Goods的父窗体是owner了.
我现在在Goods中再打开一个新的窗体New,我要把New也设置成父窗体为owner
public partial class Form1
{
public Form2 form2;
private void Form1_Load(object sender, EventArgs e)
{
form2 = new Form2();
form2.MdiParent = this;
form2.Show();
}
};
public partial class Form2
{
private void Form2_Load(object sender, EventArgs e)
{
Form3 form3 = new Form3();
form3.MdiParent = this.MdiParent;
form3.Show();
}
};
public partial class Form3
{
};
public partial class Form1
{
public Form2 form2;
private void Form1_Load(object sender, EventArgs e)
{
form2 = new Form2();
form2.MdiParent = this;
form2.Show();
}
};public partial class Form3
{
};
假如我Form3的父窗体也要设成Form1.
我在Form1中
public partial class Form2
{
private void Form2_Load(object sender, EventArgs e)
{
Form3 form3 = new Form3();
form3.MdiParent = this.MdiParent;
form3.Show();
}
}
上面这一段不要.(From1是DLL文件)
我要通过传递From2的参数,把代码写在From2中或From3中.
假设有Form1、Form2两个窗体,Form1是MDI容器,Form2是Form1的子窗体。在Form2的某个方法中要再创建一个Form3,让Form3也作为Form1的子窗体,就用form3.MdiParent = this.MdiParent; 假设创建Form3的代码不是Form2的方法,就需要把Form2的对象或者Form2的MdiParent属性作为参数传递过去。
form3.MdiParent = this.MdiParent这句不能用,没这个属性。