VB.NET 2015 - 使用其他表单关闭并刷新表单

时间:2017-02-23 02:34:31

标签: vb.net forms

我有三(3)个表格,即Form1,Form2和Form3 with button。

Form1是我的主窗体,窗口状态为MAXIMIZED,边框样式为NONE。

My code from Form1 inside a button click event
   Dim form2 As New Form2
   form2.show()

Form2是一个显示一些细节的pup-up表单。窗口状态为NORMAL,表格边框样式为FIXED。它使用Form1中的按钮打开。

My code from Form2 inside a button click event
   Dim form3 As New Form3
   form3.showdialog()

Form3是另一种弹出窗体,但是使用showdialog()打开。此表单包含一些输入。当按下Form3中的按钮时,它必须关闭Form2并刷新Form1。窗口状态为NORMAL,窗体边框样式为NONE(隐藏X关闭窗体,只使用按钮关闭窗体)

My code from Form3 inside a button click event
   me.hide()
   Dim form2 As New Form2
   form2.hide() '<--- not working
   Dim form1 As New Form1
   form1.refresh()  '<--- not working

3 个答案:

答案 0 :(得分:1)

好的,在Form1中,连接Form2实例的Form2Closed()事件和那里的Refresh():

' ... in Form1 ...

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim form2 As New Form2
    AddHandler form2.FormClosed, AddressOf form2_FormClosed
    form2.Show()
End Sub

Private Sub form2_FormClosed(sender As Object, e As FormClosedEventArgs)
    Me.Refresh()
End Sub

在Form2中,您只需执行以下操作:

' ... in Form2 ...

Dim form3 As New Form3
form3.ShowDialog() ' code stops here until form3 is dismissed
Me.Close()

答案 1 :(得分:1)

我找到了使用Form3中的Button

关闭Form2的答案

在Form3内,在Button click事件中

Me.Close()

Dim form2 = Application.OpenForms.OfType(Of Form2)().FirstOrDefault()
If form2 IsNot Nothing Then
    form2.Close()
End If

Dim form1 = Application.OpenForms.OfType(Of Form1)().FirstOrDefault()
If form1 IsNot Nothing Then
    form1.Refresh()
End If

我认为form3.Refresh正在运行,但它不是我需要的。我想在Form1中调用Form1_Load加载事件。 任何人都知道它是如何完成的?

答案 2 :(得分:0)

你说这些代码行不起作用但它们正在工作。他们正在做他们应该做的事情。举个例子:

Dim form2 As New Form2
form2.hide()

该代码说&#34;创建一个新的Form2对象并隐藏它&#34;。这是新的Form2吗?不,它没有,所以它正在工作。您的期望似乎是告诉要隐藏的新Form2对象神奇地隐藏了现有的Form2对象。不是。如果你想隐藏那个EXISTING Form2对象,那么你必须在该对象上调用Hide,而不是在新对象上调用。{/ p>