2011-09-10 29 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を開いて閉じるようにしたいですか? MSDNから

答えて

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

My.Application.OpenFormsプロパティは関係なく、それらを開いたスレッドの、開いているすべてのフォームを返します。フォームにアクセスする前に、各フォームのInvokeRequiredプロパティをチェックする必要があります。そうしないと、InvalidOperationException例外がスローされることがあります。詳細については、How to: Access All Open Forms of an Application (Visual Basic)

希望します。

関連する問題