C# winForm MDI使用小记

来源:互联网 发布:mysql在线数据库设计 编辑:程序博客网 时间:2024/05/04 07:43

代码没能带回来,博文是在linux平台写的,有些名字没记牢,会有出入,attention

 

1,首先,父窗口要设置isenablemdi属性。实现MDI结构的父子窗口套用,最重要的是在父窗口实例化自窗口(例frmForm),(名字好像有些错误)

 

2,关于自窗口在父窗口中的自动排列,C#提供一个父窗口属性定义,(好像是mdiLayout),通过设置这个属性即可实现层叠、横向、纵向排列(大于三个子窗口时自动调整为平均分配的窗口排列)。

 

3,我当时调的时候只用三个窗口,所以只看到横向或纵向排列的情况,不知道Vertical和H...在大于三个时可以均匀排布(如左边三个,右边三个)。于是就自己写了一个小算法,也实现了功能;花了两三个小时的样子,感觉效果比自动排的漂亮,呵呵,黄婆了

我的实现方法:

a,利用parentForm.width和parentForm.height以及可以确定的其它控件的大小,计算得到mdi窗口大小

b,根据mdi子窗口数量计算平均每个窗口的面积

c,从(0,0)开始逆序从上往下,从左到右处理每个窗口的location,并把size设置为平均面积(最后查看的窗口在最前面)

 

这当中有几个细节

a,用arraylist 保存打开的mdi自窗口信息,方便管理和配置(如location,size配置,非常方便)

b,对于奇数个的情况,算平均时窗口数+1;给最中间的窗口的size*2,使其横向铺在最下面,面积为平均值的两倍

 

Ok,就这样了

 

原创粉丝点击