我的项目中有两个表单(Form1.vb,屏幕名为" MainPanel"和From2.vb,屏幕名为" frmTestSelect")。我在MainPanel上有一个打开frmTestSelect的按钮。 frmTestSelect是比MainPanel小得多的屏幕/格式。当两个表单都打开时,我希望用户能够单击MainPanel表单,从而关闭frmTestSelect屏幕。到目前为止,当我点击MainPanel时,它所做的只是将MainPanel置于焦点,但让FrmTestSelect屏幕在后台打开。如果MainPanel的焦点或任何对象的焦点都是真的,我想关闭它。最简单的方法是什么?谢谢。
答案 0 :(得分:2)
Dim frmTestSelect As Form2 = Nothing
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
frmTestSelect = New Form2
frmTestSelect.Show()
End Sub
Private Sub Form1_Activated(sender As Object, e As EventArgs) Handles Me.Activated
If frmTestSelect IsNot Nothing Then
frmTestSelect.Close()
End If
End Sub
更新:将Form1事件更改为已激活,以便即使单击Form1上的控件也会关闭Form2。
答案 1 :(得分:1)
您可以在MainPanel中保留对frmTestSelect的实时实例的引用(例如,在成员变量中),如果MainPanel获得焦点,则在其上调用.Close()。
如果使MainPanel成为MDIParent,并且frmTest选择MDIChild(通过指定.MDIParent = MainPanelInstance),则可以在获得焦点时访问MainPanel的所有MDIChildren,并关闭所述子项。
也就是说,如果你使用MDIParent路由,子表单永远不会被隐藏"在其父母身后。