我有三(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
答案 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>