我有一个将数据从Form1传递到Form2的项目,Form1将显示在Monitor1中,而Form2将显示在Monitor2中。我达到了这个结果,但是每次我想要更新Form2中的数据时,它都会创建另一个Form2实例。是否可以在不创建新Form2的情况下更新Form2?
Dim OBJ As New Form2
OBJ.ListBox1.Items.AddRange(ListBox1.Items)
OBJ.ListBox2.Items.AddRange(ListBox2.Items)
OBJ.Label1.Text = TextBox3.Text
OBJ.Show()
End Sub
我搜索了Internet,但发现的只是创建一个新的Form2,而不是更新现有的Form2。
答案 0 :(得分:1)
很有趣,尽管我经常告诉初学者不要使用表单的默认实例并创建自己的实例,但是在这种情况下,您可以从使用默认实例中受益。默认实例由系统管理,因此只有在需要一个新实例(即尚未创建任何实例或已废弃最后一个实例)的情况下,它才会创建一个新实例。
Form2.ListBox1.Items.AddRange(ListBox1.Items)
Form2.ListBox2.Items.AddRange(ListBox2.Items)
Form2.Label1.Text = TextBox3.Text
'Display the instance if it is new and focus it otherwise.
Form2.Show()
Form2.Activate()
通过在其中使用类名而不是该类型的变量,可以引用默认实例。了解更多here。
另一种方法是自己管理一个实例,这是在默认实例之前在C#或VB.NET中需要执行的操作。
Private f2 As Form2
Private Sub UpdateForm2()
If f2 Is Nothing OrElse f2.IsDisposed Then
f2 = New Form2
End If
f2.ListBox1.Items.AddRange(ListBox1.Items)
f2.ListBox2.Items.AddRange(ListBox2.Items)
f2.Label1.Text = TextBox3.Text
'Display the instance if it is new and focus it otherwise.
f2.Show()
f2.Activate()
End Sub