MDI窗体的优化---下

前端之家收集整理的这篇文章主要介绍了MDI窗体的优化---下前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

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

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

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

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

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

@H_301_121@

@H_301_121@

这样显示出来,在设置一下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子窗体最小化后通常是下面这种情况:


@H_301_121@

@H_301_121@

@H_301_121@

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

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

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


@H_301_121@

@H_301_121@

@H_301_121@

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

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


@H_301_121@

@H_301_121@

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

form2最大化后的效果图:


@H_301_121@

@H_301_121@

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

原文链接:https://www.f2er.com/vb/258590.html

猜你在找的VB相关文章