VB6如何编列MDI主窗体下的所有子窗体

mqlbeyond1984 2017-08-16 11:22:58
想实现如下功能,不知VB6能不能支持这个功能:
一个MDI主窗体下面已经打开多个子窗体:frm1、frm2、frm3、...
当再次点击菜单(每个菜单项对应一个子窗体),如果子窗体之前已加载,就激活那个子窗体,如果子窗体没有加载过就打开这个子窗体。
...全文
561 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
shiguangxin 2017-09-20
  • 打赏
  • 举报
回复
For Each FM In Forms Next
ZHRXJR 2017-08-20
  • 打赏
  • 举报
回复
我认为不是特别复杂吧,实际在菜单的 Click 事件中给frm1窗体加上 SetFocus方法就可以了

Private Sub cdmc_Click()
 frm1.Show
 frm1.SetFocus
End Sub
SetFocus就是让其获得焦点,在打开多个MDI子窗体时,点击菜单就可以将菜单的子窗体拉到最前面。
y2012 2017-08-18
  • 打赏
  • 举报
回复
Private Sub Menu1_Click()
    Dim frm As Form
    Dim flag As Boolean
    flag = False
    For Each frm In Forms
        If frm.Name = "BSetting" Then
            frm.SetFocus
            flag = True
            Exit For
        End If
    Next
    If flag = False Then
        Dim cs As New BSetting
        cs.WindowState = 2
        cs.Show
    End If
End Sub
mqlbeyond1984 2017-08-16
  • 打赏
  • 举报
回复
现有情况是:多个子窗体已经点击打开过了,再点击菜单打开对应窗体时,如果那个字窗体已经打开过了,就无法激活到当前状态,这样导致给用户的感觉是:点这个菜单怎么没有反应啊,再仔细一瞧原来已经打开这个窗体了,要是子窗体很多的话,点不人性化。 所以有这样需求的想法:当再次点击菜单时,程序遍历所有已打开的子窗体,如果遍历找到了只需激活该窗体到当前状态就可以了。
mqlbeyond1984 2017-08-16
  • 打赏
  • 举报
回复
引用 2 楼 vansoft 的回复:
这个不需要你写代码啊。有个菜单自己会管理的啊。
默认菜单就有自动切换的功能? 我的情况是偶尔有自动情况,大部分情况是不能自动切换的,不知道为何?
vansoft 2017-08-16
  • 打赏
  • 举报
回复
这个不需要你写代码啊。有个菜单自己会管理的啊。

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧