Newb问题。我来自VB6,在那里可以访问您只需使用的另一个表单
form2.textbox.text = x
在VB.net中我读过使用
Dim newform As New Form2()
newform.textbox.text = x
每次都会创建一个新表单。我想只有这个表单的一个实例,并能够在以后调用它的数据。做这个的最好方式是什么?感谢。
答案 0 :(得分:3)
有不同的方法可以解决这个问题。
您可以将Form2
的实例创建为模块上的属性(特定于VB),或者您可以实现Singleton模式,这是一种更通用的方法。
无论哪种方式,我们的想法是在其他表单的范围内维护对您的第二个表单的引用,并在需要时简单地调用form2.ShowDialog()
或form2.Show()
。
编辑:
为了完整起见,这里是Form2
的Singleton的极简主义实现:
Public Class Form2
Private Shared _instance As Form2
Private Sub New()
' This call is required by the designer.
InitializeComponent()
' Add any initialization after the InitializeComponent() call.
End Sub
Public Shared Function GetInstance() As Form2
If _instance Is Nothing Then
_instance = New Form2()
End If
Return _instance
End Function
End Class
然后在另一种形式中,例如在Button
点击处理程序中,你会得到像这样的Singleton实例:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Form2.GetInstance().ShowDialog()
End Sub
需要注意的是Form2
的构造函数是私有的,因此实例化它的唯一方法是通过共享函数。
答案 1 :(得分:0)
您正在开发WinForm应用程序。所以当Form2没有显示时,你试图为其控件的一个属性赋值可能不是一个好主意。从Form2,您始终可以获得调用表单的属性或控件状态。
要显示Form2,您不必创建它的实例,只需调用:Form2.Showdialog()将打开它。我假设你已经在解决方案树下添加了Form2文件。