2016-01-11 10 views
0

Kinda новый для визуального режима и нужно, чтобы эта простая вещь работала для моего проекта курсовой работы.VB.Net Закрыть сразу две формы

Желаемый результат: когда пользователь пытается выйти из формы 2, откроется другая форма (FormCheck), спрашивая пользователя, уверены ли они, что они хотят уйти, если они выбрали да, тогда оба Form2 и FormCheck закроются, и Form1 откроется , Однако, когда я попытаюсь сделать это, FormCheck закроется, и Form1 откроется, но Form2 останется открытым позади Form1.

Вот мой код:

Private Sub btnYes_Click(sender As Object, e As EventArgs) Handles btnYes.Click 
     Dim NewForm As Form1 
     NewForm = New Form1 
     NewForm.Show() 
     NewForm = Nothing 
     Me.Close() 
     Form2.Close() 

Как я сказал, все еще новый, так что поможет, если ответ в качестве основных, как это возможно. Спасибо заранее!

+0

Вы открываете форму так же, как открываете Form1 в своем примере? Если это так, вы создаете новый Form2 и пытаетесь закрыть экземпляр по умолчанию. Вам нужно будет либо передать ссылку вашего текущего экземпляра Form2, либо закрыть этот экземпляр, либо найти и удалить его из коллекции Forms. –

+0

Просто не приставайте к пользователю с бесполезными диалогами. Да, он уверен. –

ответ

0

Вы должны найти существующие Form2.

'YOUR EXISTING CODE HERE 
For Each frm as Form in Application.OpenForms 
    If frm.Name="Form2" 
     frm.Close() 
    End If 
Next 
'CLOSE THIS FORM HERE 

Вы должны запустить этот код перед закрытием текущей формы.

0

Вы можете сделать это, добавив свойство в Form2, которое говорит, если пользователь нажмет «да» или «нет». Согласно его ответу, вы можете закрыть Form1 или нет. Form2 будет закрыт после того, как пользователь нажмет «да» или «нет» в любом случае.

Public Partial Class Form1 
    Inherits Form 
    Public Sub New() 
     InitializeComponent() 
    End Sub 

    Private Sub button1_Click(sender As Object, e As EventArgs) 
     Dim form2 As New Form2() 
     form2.ShowDialog() 

     If form2.IsExitRequired Then 
      Me.Close() 
     End If 
    End Sub 
End Class 

Public Partial Class Form2 
    Inherits Form 
    Public Sub New() 
     InitializeComponent() 
    End Sub 

    Public Property IsExitRequired() As Boolean 
     Get 
      Return m_IsExitRequired 
     End Get 
     Private Set 
      m_IsExitRequired = Value 
     End Set 
    End Property 
    Private m_IsExitRequired As Boolean 

    Private Sub yesButton_Click(sender As Object, e As EventArgs) 
     IsExitRequired = True 
     Close() 
    End Sub 

    Private Sub noButton_Click(sender As Object, e As EventArgs) 
     IsExitRequired = False 
     Close() 
    End Sub 
End Class 
0

Вы должны закрыть первые другую форму перед закрытием текущей формы.

Form2.Close() 
Me.Close()