当前位置:编程学习 > C#/ASP.NET >>

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#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,