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

C# WinForm MDI左右分栏  多文档

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

打开子窗口代码

C# WinForm MDI左右分栏  多文档C# WinForm MDI左右分栏  多文档代码
            Form childForm = new Form();
            childForm.MdiParent 
= this;
            childForm.Text 
= "Window " + childFormNumber++;
            childForm.Show();

 

C# WinForm MDI左右分栏  多文档C# WinForm MDI左右分栏  多文档代码
  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();
  }

检查当前打开的窗口

 

C# WinForm MDI左右分栏  多文档C# WinForm MDI左右分栏  多文档代码

 

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

解决办法:

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

C#

frmMDIChild child = new frmMDIChild();

child.MdiParent = this;

child.WindowState = FormWindowState.Maximized;

child.Show();

相关文章:

  • 2022-02-05
  • 2021-08-08
  • 2021-11-30
  • 2021-07-19
  • 2022-03-07
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-02-25
  • 2021-08-14
  • 2022-12-23
相关资源
相似解决方案