当" Main"形式的重点是真实的

时间:2015-01-21 18:48:02

标签: vb.net forms

我的项目中有两个表单(Form1.vb,屏幕名为" MainPanel"和From2.vb,屏幕名为" frmTestSelect")。我在MainPanel上有一个打开frmTestSelect的按钮。 frmTestSelect是比MainPanel小得多的屏幕/格式。当两个表单都打开时,我希望用户能够单击MainPanel表单,从而关闭frmTestSelect屏幕。到目前为止,当我点击MainPanel时,它所做的只是将MainPanel置于焦点,但让FrmTestSelect屏幕在后台打开。如果MainPanel的焦点或任何对象的焦点都是真的,我想关闭它。最简单的方法是什么?谢谢。

2 个答案:

答案 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路由,子表单永远不会被隐藏"在其父母身后。