Как закрыть все динамически созданные формы? - PullRequest
1 голос
/ 10 сентября 2011

Как закрыть все открытые формы, созданные на лету?

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 - есть идеи?

Ответы [ 2 ]

1 голос
/ 10 сентября 2011

Из MSDN:

Свойство My.Application.OpenForms возвращает все открытые формы независимо от того, какой поток их открыл. Вы должны проверить свойство InvokeRequired каждой формы, прежде чем получить к ней доступ; в противном случае может возникнуть исключение InvalidOperationException. Для получения дополнительной информации см. Как получить доступ ко всем открытым формам приложения (Visual Basic)

Надеюсь, это поможет.

0 голосов
/ 10 сентября 2011

Просто создайте список / коллекцию и добавьте в нее все созданные формы. Затем вы можете перебрать список / коллекцию, чтобы закрыть все. Вот пример в 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();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...