以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  若切换至“窗口3”,则自动打开“窗口4”,并关闭除“窗口3”和“窗口4”以外的所有窗口,  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=139204)

--  作者:fengwenliuyan
--  发布时间:2019/8/8 10:17:00
--  若切换至“窗口3”,则自动打开“窗口4”,并关闭除“窗口3”和“窗口4”以外的所有窗口,
有4个窗口:窗口1、窗口2、窗口3、窗口4。
若“窗口1”打开,则只打开“窗口2”,
若切换至“窗口3”,则自动打开“窗口4”,并关闭除“窗口3”和“窗口4”以外的所有窗口,
同理,若切换至“窗口1”,则自动打开“窗口2”,并关闭除“窗口1”和“窗口2”以外的所有窗口,
这应该怎样做到?

--  作者:有点蓝
--  发布时间:2019/8/8 10:43:00
--  
1、如果窗口1和窗口3是独立或者模式窗口:

全局代码:
Public  Sub Form_Activated(ByVal sender As Object, ByVal e As System.EventArgs)
\'定义一个窗体被激活的事件
    If forms.ActiveForm IsNot Nothing Then
        Functions.Execute("Form_Activated")  \'这里自己写个函数处理
    End If
End Sub

窗口1和窗口3,afterload事件
AddHandler e.form.baseform.Activated, AddressOf Form_Activated

函数Form_Activated
Dim frm As WinForm.Form = Forms.ActiveForm
If frm.Name = "窗口1" AndAlso Forms("窗口2").Opened = False Then
    Forms("窗口2").show
End If

2、如果窗口1和窗口3不是独立或者模式窗口
窗口1和窗口3,afterload事件
    For Each frm As WinForm.Form In Forms 
        If frm.Name = "窗口3" OrElse frm.Name = "窗口4"
            If frm.Name = "窗口4" AndAlso frm.Opened = False Then
                frm.Open
            End If
        ElseIf frm.Opened
            frm.Close
        End If
    Next

MainTableChanged事件
If MainTable.Name = "表B(窗口1和窗口3的所有者表
)" AndAlso Forms("窗口3").Opened  Then
    For Each frm As WinForm.Form In Forms 
        If frm.Name = "窗口3" OrElse frm.Name = "窗口4"
            If frm.Name = "窗口4" AndAlso frm.Opened = False Then
                frm.Open
            End If
        ElseIf frm.Opened
            frm.Close
        End If
    Next
End If