winform主窗体嵌入多个子窗体
在一个主窗体中设置一个panel,在panel中嵌入多个form窗体,现在我是new了很多个form窗体,分别让它们隐藏和显示,现在想找个解决办法,只new一个form窗体,然后根据里面不同的对象信息,显示和隐藏,就像delphi里面的TList和TStringList这种的在c#的winform中有那个可以实现这个功能? --------------------编程问答-------------------- 不知道我说的是不是清楚,如果哪位解决过类似的问题,而觉得我的描述不是很清楚的话,可以说一声,我再好好给您描述一下!! --------------------编程问答-------------------- 直接 BringToFront --------------------编程问答-------------------- 你把from窗口设一个子父窗口,就可以实现你的功能了 --------------------编程问答-------------------- 为什么不用 mdi 实现? --------------------编程问答-------------------- 用多文档窗口实现:1\首先那一个from做父窗口 (及窗口的IsMdiContainer属性设为true )
2\在new子窗口时加frmChild.MdiParent = this;
3\在点功能时判断是否窗口已打开
private bool IsOpenOnlyFrm(string frmName)
{
bool isTrue = false;
//遍历主窗口上的所有窗体
for (int i = 0; i < this.MdiChildren.Length; i++)
{
//如果所点的窗口被打开则重新激活
if (this.MdiChildren[i].Name.ToString() == frmName)
{
//_windowLoad[this.MdiChildren[i].Name] = true;
this.MdiChildren[i].Activate();
this.MdiChildren[i].WindowState = FormWindowState.Maximized;
isTrue = true;
break;
}
}
return isTrue;
} --------------------编程问答-------------------- 这个当然可以了,设置好控件的显隐属性就可了。 --------------------编程问答-------------------- From1 f=new From1;
f.MdiParent=this;
f.Parent=panel1;
f.Show();
显示最前面
Panel1.BringToFront();
form1.BringToFront();
--------------------编程问答-------------------- 回复jiangjun:
你好!我这个原界面和嵌入后的界面都不一样(包括颜色,窗体显示3D,并且主窗体中有好几个panel用做其他用),如果用这个mdi会改变我的初始化的布局。我想问一下有没有类似于delphi里面的这一段
{panel嵌入窗体后,重新再嵌入新的窗体,会将原来已经嵌入的窗体隐藏,新的窗体重新创建。这种方法不是很好,我想用一个函数来判断:如果新打开的窗体已经在panel控件嵌入(即已经存在),就不重复创建该窗体,再嵌入。而是直接将该窗体显示。该怎样实现?
可以将form放到一个TList对像中,
//TListForm:=TStringList.create;
index:integer;
index:=TListForm.IndexOf( 'FORMNAME ');
if index <0 then
begin
BaseReportForm:=TBaseReportForm.Create(nil);
BaseReportForm.Parent:=tabReport;
BaseReportForm.BorderStyle:=bsNone;
BaseReportForm.Align:=alClient;
BaseReportForm.Show;
TListForm.add( 'FORMNAME ');
end
else
begin
TForm(TListForm.objects(index)).show;
end;
}
同样的方法,在c#中有没有对应的可以获得form的对象,并且对象可以进行上面代码中的操作。
补充:.NET技术 , C#