2016-01-28 1 views
1

У меня 2 формы открыты, моя текущая форма находится в диалоговом окне. Теперь я хочу закрыть эти 2 формы и открыть другую форму.vb.net Закрытие нескольких форм и открытие другой формы

Dim frmStg2 As New frmStageTwo 
Dim frmStg1 As New frmStageOne 

     frmStg2.Show() 
     Me.Close() 
     frmStg1.Close() 

Но этот код кажется не работает на frmStageOne остается открытым и показывая frmStageTwo, но я не могу просмотреть эту форму.

This is what happen

+2

который один является 'Me', диалоговое? Является ли одна из них основной, пусковой формой? – Plutonix

+0

Да, это диалог, ни одна из них не является начальной формой. –

ответ

0

Вы пытаетесь закрыть форму экземпляр, который еще не был открыт.

Если вы используете ключевое слово New, вы объявляете новый экземпляр объекта (Form в этом случае), у которого есть собственная версия свойств и полей базового класса.

Чтобы закрыть уже существующий экземпляр формы, вы можете пройти через свойство Application.OpenForms.

For Each frm As Form In Application.OpenForms 
    If frm.GetType() Is GetType(frmStageOne) Then 
     frm.Close() 
    End If 
Next 

Вы могли бы на самом деле сделать его метод:

Public Sub CloseFormsOfType(ByVal TargetForm As Form) 
    For Each frm As Form In Application.OpenForms 
     If frm.GetType() Is TargetForm.GetType() Then 
      frm.Close() 
     End If 
    Next 
End Sub 

... и просто позвонить:

CloseFormsOfType(frmStageOne) 
+0

Спасибо, сэр, это меня спасает! :) –

+0

@PauloRomulo, пожалуйста, отметьте мое сообщение как принятый ответ, нажав зеленый галочку рядом с сообщением. Это покажет вашу благодарность вкладчику, но это также укажет другим пользователям, которые имеют ту же проблему, что и для вас. :) –

+0

Извините, сэр, я здесь новый, но еще раз спасибо, сэр .. –