2014-06-06 185 views
0

这应该很简单,但我无法使其工作。我搜索了SO和Google,令人惊讶的是我还没有找到答案。当另一个表格关闭时,我想要做的就是关闭一个表单。第二种形式是在点击按钮时打开。当Form1关闭时,Form2也应该关闭。 Form2可能无法打开,因此我们需要检查它是否首先打开。这是我一直在努力:当另一个窗体关闭时关闭窗体

Private Sub frm_scu_config_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing 

    ' this isn't working 
    If Application.OpenForms().OfType(Of frm_scu_report_display).Any Then 

     Dim frmConfig As frm_scu_report_display 

     ' Open the config form and pass the list of turbines 
     frmConfig = New frm_scu_report_display() 
     frmConfig.Close() 

    End If 
End Sub 

任何帮助,将不胜感激。

+0

'如果Form2的状态并没有没有那么Form2.Close' – Plutonix

+0

使用布尔变量作为标志.. – matzone

+0

谢谢@Plutonix。如果我在if语句中抛出一个消息框,它会正确识别第二个表单是否打开,但它不会关闭它。 – mack

回答

1

在LINQ查询中,您已经拥有了更好的一半答案,但是您创建了一个新实例frm_scu_report_display并尝试关闭此(未打开)实例。
如果我没弄错了,应该如果你留下来,你已经有了正确的道路上工作:

While Application.OpenForms().OfType(Of frm_scu_report_display).Any 
     Application.OpenForms().OfType(Of frm_scu_report_display).First.Close() 
    End While 
+0

谢谢@KekuSemau!这工作完美。也感谢在逻辑中解释我的错误。 :) – mack

+1

不要在生产中试用。 –

+0

是的,我也不会使用它,只是说明它如何与他已有的... – KekuSemau