2011-09-10 23 views
1

如何關閉所有在飛行中創建的打開表格?如何關閉所有動態創建的表單?

Sub OpenForms 
    dim F as new frmForm1 
    F.show 

    dim F2 as new frmForm1 
    F2.show 
End Sub 

sub CloseForms 
'doesn't work, (forms are created in a dll and ".openforms" method is not available): 
'For each f as Form in My.Application.OpenForms 
' f.Close() 
'Next 
end Sub 

我想關閉所有打開的frmForm1 - 任何想法?

回答

0

只需創建一個列表/集合並添加所有創建的表單即可。然後你可以遍歷列表/集合關閉所有。這裏是C#中的示例:

List<frmForm1> _forms = new List<frmForm1>(); 

void OpenForms() 
{ 
    var f1 = new frmForm1(); 
    _forms.Add(f1); 

    var f2 = new frmForm1(); 
    _forms.Add(f2); 

} 

void CloseForms() 
{ 
    foreach (var form in _forms) 
    { 
     form.Close(); 
    } 
} 
+0

謝謝,效果很好。 :) – MilMike

1

從MSDN:

的My.Application.OpenForms屬性返回所有打開的形式,無論哪個線程打開它們。在訪問它之前,你應該檢查每個表單的InvokeRequired屬性;否則,它可能會拋出InvalidOperationException異常。欲瞭解更多信息,請參閱How to: Access All Open Forms of an Application (Visual Basic)

希望有所幫助。