如题

解决方案 »

  1.   

    http://msdn.microsoft.com/zh-cn/library/xyhh2e7e.aspxWindows 窗体编程
    多文档界面 (MDI) 应用程序更新:2007 年 11 月多文档界面 (MDI) 应用程序使您能同时显示多个文档,每个文档显示在各自的窗口中。MDI 应用程序中常有包含子菜单的“窗口”菜单项,用于在窗口或文档之间进行切换。
    本节内容 如何:创建 MDI 父窗体
    提供有关如何为 MDI 应用程序内的多个文档创建容器的说明。如何:创建 MDI 子窗体
    给出创建在 MDI 父窗体内操作的一个或多个窗口的说明。如何:确定活动的 MDI 子窗体
    提供有关如何验证具有焦点的子窗口(并将其内容发送到剪贴板)的说明。如何:将数据发送到活动的 MDI 子窗体
    提供有关如何将信息传输到活动子窗口的说明。如何:排列 MDI 子窗体
    提供有关如何平铺、层叠或排列 MDI 应用程序的子窗口的说明。
      

  2.   

    //---查询MDI子窗体是否已经打开,放在LOAD事件里----
            private bool haveOpen(string childForm)
            {
                foreach (Form inform in this.MdiChildren)
                {
                    if (inform.Name == childForm) //用子窗体的Name进行判断
                    {
                        //如果存在则将他激活,为最小化则使其正常
                        if (inform.WindowState == FormWindowState.Minimized)
                        {
                            inform.WindowState = FormWindowState.Normal;                                            }  
                        inform.Activate();                    
                        return true;
                    }
                }
                return false;
            }     要单击或其它显示窗体时用:
     if (this.haveOpen("MangerReadersForm") == false) //MangerReadersForm是窗体的名字
                {
                    MangerReadersForm mrf = new MangerReadersForm(this.UserName);
                    mrf.MdiParent = this;
                    mrf.Show();
                }  
    C#中如何处理子窗体在父窗体中显示的位置
    那就是设置窗体属性 StartPosition,注意:是对子窗体中设置该属性,在属性窗口中找到StartPosition(开始位置),点击该属性,然后就可以设置你想要的位置。设置好了以后,运行父窗体就可以点击相关的链接,就可以查看到你想要的效果了。实现mdi
    先在主窗体中设置(isMdicontainer为true) 
    范例: 
    给主窗体中拉进一个botton;双击(写代码) 
    如下: 
    Form2 myForm2 = new Form2(); 
    myForm2.MdiParent = this; 
    myForm2.Show();
    判断窗体是否打开:
    if (a.Visible) 

        // 窗体是Show的。 

    else 

        // 窗体是Hide的。 
    }
    模式窗体
    Son zi=new SON();//Son为窗体名
    zi.ShowDialog();
    子窗体相对父的位置
    在form   load的时候加上:   
          Me.Top   =   100   //me是子窗体      Me.Left   =   100   
      就可以设置form窗体相对mdi父窗体的位置了。