MDI窗体的优化---下

上一篇,刚刚讲到,使用Setparent函数可以解决pictureBoxMDI子窗体的显示问题。

 

从一开始,我们就走进了一个误区,在MDI窗体只能添加有对其属性的控件。例如toolbarstatus,等。

其实,在MDI窗体上放置PictureBox控件。我们就已经钻进了牛角尖。

 

既然在MDI窗体上不能添加无对齐属性的控件。那么就需要引入一个容器控件,在容器控件中添加其他控件。

 

其实,我们可以用一个form作为一个容器来使用。

 

首先把form设置成无边框。这样才能使得form作为容器使用。



这样显示出来,在设置一下form1的长宽,就可以充当MDI窗体的容器控件了。

 

首先这样做,有一个弊端,那就是form1窗体具有焦点属性,当有其他MDI子窗体浮于form1窗体之上的时候,你在点击form1窗体,那么你正在使用的子窗体就被form1覆盖,而无法显示。

 

对于不使用的窗体,我们使用的操作通常是最小化。所以对于系统中其他子窗体需要添加一个事件。

 

Private SubForm_Deactivate()       '当程序没有焦点的时候,最小化
    If Me.WindowState <> 1 Then
        Me.WindowState = 1
        'Me.ZOrder
    End If
End Sub

 

这样就可以解决form1浮于子窗体之上的情况。

 

对于MDI子窗体最小化后通常是下面这种情况:




但是,我们使用了form1作为MDI窗体的容器,会发现,当我们使用最小化进行操作的时候,最小化后的标题,也会隐藏在form1的后面,而无法显示出来。

 

面对这么多的问题,那么使用form也不是很简单啊。如果能把form1设置成一个没有焦点的对象。那么这些问题就轻松解决了。不过笔者,没有找到这种办法。

 

所以,笔者采用了  form1的高度缩短了,这样form1就无法挡住 MDI子窗体最小化后的菜单了。




看起来还是很不美观。所以笔者思前思后,好像MDI窗体的颜色也可以改吧。

 

修改MDI窗体的backcolor属性,就搞定了。



 

至于上文提到的MDI子窗体最大化后,子窗体的标题栏位于MDI菜单栏下方的问题,也不会出现。

 

form2最大化后的效果图:




如果读者有更好的方法,请留言。共同进步。

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 19
    评论
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值