C# WinForm MDI左右分栏 多文档

1.主要用到的控件TreeViewSplitter,把父窗口IsMdiContainer设为True。子窗体StartPosition=Manual,效果如图

用Splitter把父窗口分两个部分,左边放treeview,右边显示子窗体。

打开子窗口代码

代码
            Form childForm = new Form();
            childForm.MdiParent 
= this;
            childForm.Text 
= "Window " + childFormNumber++;
            childForm.Show();

 

代码
  private void menu3_Click(object sender, EventArgs e)
  {
            
//如果当前有子窗口打开,关闭当前的窗口
            if (this.MdiChildren.Length > 0)
            {
                
this.ActiveMdiChild.Close();
            }

            DataBillSystem.ReWork.FrmReWork frmReWork 
= new DataBillSystem.ReWork.FrmReWork();
            frmReWork.MdiParent 
= this;
            frmReWork.Show();
  }

检查当前打开的窗口

 

代码

 

有时候我们需要在子窗体显示的时候就是最大化(也就是填充了整个父窗体),但通常会遇到以下麻烦: 如果在 Visual Studio 2010里通过属性工具栏设定了子窗体的 WindowState 为 Maximized,然后在运行过程中会发现子窗体实例化时不会最大化,而是当改变了父窗体的大小之后才随即最大化。而通过在子窗体的构造器里添加代码的方式也无济于事。

解决办法:

取消设置 WindowState 的值(改回默认的 Normal ),然后在实例化子窗体之后用代码设置它的WindowState即可,代码:

C#

frmMDIChild child = new frmMDIChild();

child.MdiParent = this;

child.WindowState = FormWindowState.Maximized;

child.Show();

posted @ 2009-11-30 10:06  ike_li  阅读(2557)  评论(0编辑  收藏  举报