C# WinForm MDI左右分栏 多文档

1.主要用到的控件TreeView,Splitter,把父窗口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();
  }

检查当前打开的窗口

 

代码
     private   void  treeView1_AfterSelect( object  sender, TreeViewEventArgs e)
    {  
            
string  nodeText  =  e.Node.Text;      
            
bool  isHaveWindow  =   false ;
            
for  ( int  i  =   0 ; i  <   this .MdiChildren.Length; i ++ )
            {
                
if  ( this .MdiChildren[i].Text.Equals(nodeText))  // 查看有没有相同的MDI子窗体
                {
                    
this .MdiChildren[i].Activate();  // 子窗体已经被创立,激活它
                    isHaveWindow 
=   true ;
                    
break ;
                }
            }
// end for
    }

 

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

解决办法:

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

C#

frmMDIChild child = new frmMDIChild();

child.MdiParent = this;

child.WindowState = FormWindowState.Maximized;

child.Show();

转载于:https://www.cnblogs.com/ike_li/archive/2009/11/30/1613507.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值