VB.Net访问其他形式而不创建新的形式

时间:2016-04-18 23:35:19

标签: vb.net

Newb问题。我来自VB6,在那里可以访问您只需使用的另一个表单 form2.textbox.text = x

在VB.net中我读过使用

Dim newform As New Form2()

newform.textbox.text = x

每次都会创建一个新表单。我想只有这个表单的一个实例,并能够在以后调用它的数据。做这个的最好方式是什么?感谢。

2 个答案:

答案 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)

  1. 您正在开发WinForm应用程序。所以当Form2没有显示时,你试图为其控件的一个属性赋值可能不是一个好主意。从Form2,您始终可以获得调用表单的属性或控件状态。

  2. 要显示Form2,您不必创建它的实例,只需调用:Form2.Showdialog()将打开它。我假设你已经在解决方案树下添加了Form2文件。