加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

MDI窗体的优化---下

发布时间:2020-12-17 08:08:39 所属栏目:百科 来源:网络整理
导读:上一篇,刚刚讲到,使用 Setparent 函数可以解决 pictureBox 和 MDI 子窗体的显示问题。 从一开始,我们就走进了一个误区,在 MDI 窗体只能添加有对其属性的控件。例如 toolbar , status ,等。 其实,在 MDI 窗体上放置 PictureBox 控件。我们就已经钻进了

上一篇,刚刚讲到,使用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最大化后的效果图:




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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读