VB6中 怎么让MDI子窗体始终填满父容器,并随MDI窗体的大小改变而改变?
网上找到C#的MDI子窗体有这样的功能,不知道VB6有没有,求解。
c# winform mdi子窗体始终填满父容器并随父容器改变大小
ChildForm f = new ChildForm();
f.MdiParent = this;
f.Parent = this.splitContainer1.Panel2;
f.Show();
f.Dock = DockStyle.Fill; //实现此功能的语句 展开
关于楼主说的“最大化之后,其它MDI子窗体就显示不出来了”,这种说法是错误的。
上图中,同时打开了测试A、测试B子窗体,且窗体最大化。
子窗体最大化时,在菜单栏前面出现窗体图标(图标以当前的子窗体图标为准)。
点击此图标,可以看到最下面的“下一个”命令,点击它即可切换子窗体。
同时,不难发现,下一个的快捷键是 Ctrl + F6 组合键,
因此,只要按下 Ctrl + F6 组合键,也可以达到切换子窗体的目的。
注意:上面说的切换子窗体,是指在已经打开的子窗体之间切换。
值得一提的是,如果楼主采用了此方案,那么,不必使用任何代码就能实现:
当主窗体改变大小时,所有当前打开的子窗体的最大化不变。。
另外,如果你够细心,能够看到在窗体的下方工具栏内测试A、测试B的字样。。
你也可以通过点击测试A、测试B切换对应的子窗体。
当然,实现这样的功能代码有些麻烦,需要动态添加删除工具栏内当前打开、关闭的子窗体名称
因为我只是简单测试了下可行性,这里就不给出具体的代码了,有兴趣的话可以自行研究。。
最后,是我对楼主要求窗体非最大化,随主窗体改变大小而始终保持最大的一点看法。
我觉得这样的主、子窗体关系既不美观,又彻底遮挡住了其他已经打开的子窗体。反而更不容易在子窗体之间切换!下图中,如何切换到测试B窗体?楼主可以自行对比一下两个图的优劣:
当窗体改变时,同时改变Mdi子窗体的大小即可。
示例:
Private Sub Form_Resize() '当窗体改变时
MDIFrom.Width = Me.ScaleWidth '重新设置Mdi子窗体为窗体有效宽度
MDIFrom.Height = Me.ScaleHeight '重新设置Mdi子窗体为窗体有效高度
End Sub
说了,不是最大化,最大化之后,其它MDI子窗体就显示不出来了。
可以在ReSize 事件里改变子窗体大小,注意 请设置Mdiform的scrollbar为false
Private Sub MDIForm_Resize()
With Form1
.Width = Me.Width
.Height = Me.Height
End With
End Sub
来晚了,可能你已经不需要了