2014-09-10 3 views
0

У меня есть 2 формы. Form1 и Form2. В форме 1 есть кнопка, которая будет идти в form2, если она нажата. Если я нажму эту кнопку, если form1, form2 будет загружен, а целое число a станет 1. Если я нажму кнопку в form2, целое число a станет 0, и оно вернется к form1. Поскольку im в form1, если я снова нажму кнопку в form1, он перейдет к form2, но form2 не будет загружаться снова. Есть ли способ снова загрузить форму? Heres мой пример:Как загрузить форму без выхода из приложения?

Form1:

Public Class Form1 

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
     Me.Hide() 
     Form2.Show() 
    End Sub 

End Class 

Form2:

Public Class Form2 

    Dim a As Integer = 0 
    Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
     a = 1 
     MsgBox("load complete!!") 
    End Sub 

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
     a = 0 
     Me.Hide() 
     Form1.Show() 
    End Sub 

End Class 

Заранее спасибо!

+0

В Form2 при выполнении Button1.Click, попробуйте использовать Me.Close, а не Me.Hide, это может быть вашей проблемой. – Hoh

+0

Изначально попробуйте это после кнопки .. form2.show(), затем me.close(). но приложение закроется. Возможно, что-то в свойствах, которые нужно будет изменить. Кстати, спасибо вам, ребята. плохо попытаться понять это. Еще раз спасибо – user3418036

+0

Да, я был неправ. Вы должны установить новый экземпляр Form2, и он будет работать так, как должен. Проверьте мой ответ. – Hoh

ответ

0

Просто установите новый экземпляр Form2 перед его загрузкой.

1

Метод загрузки Form2 получает только один раз, потому что это нормальный жизненный цикл для формы. Событие загрузки только вызывается один раз до того, как форма будет загружена в первый раз.

От Form.Load Event:

Происходит перед формой отображается в первый раз.

Решение зависит от ваших потребностей. Если вам нужно сохранить состояние формы, даже когда оно скрыто, вы хотите использовать событие VisibleChanged.

Private Sub Form2_VisibleChanged(sender As Object, e As EventArgs) Handles Me.VisibleChanged 
    If Me.Visible Then 
     MsgBox("Visible changed") 
    End If 
End Sub 

Если вам не нужно, чтобы сохранить состояние, то вы можете отказаться от формы 2 и воссоздать его:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    Me.Hide() 
    Dim Form2 = New Form2() 
    Form2.Show() 
End Sub 


Dim a As Integer = 0 
Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
    a = 1 
    MsgBox("load complete!!") 
End Sub 

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    a = 0 
    Form1.Show() 
    Me.Close() 
End Sub 
Смежные вопросы