将表单文本框值传递给同一项目中的另一个表单

时间:2014-10-13 14:47:04

标签: vb.net

我目前有两种表格。 1保存用户数据并且可以修改。另一种是显示/只读表格。

我正在尝试从ReportSettings中提取数据(tbUSI.text)并将其传递给Form1并将其显示在我的UserData.text控件上。

我尝试过使用公共属性,但无济于事。我宁愿使用公共财产,因为它更干净。以下是用于设置属性的代码:

Public Property UserSignedInto As String
        Get
            Return tbUSI.Text
        End Get
        Set(value As String)
        End Set
    End Property

这是我的代码试图在主窗体(form1)上调用该属性

 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        UserData.text = UserSignedInto
End Sub

它没有拉任何东西,我主表单上的文本框是空白的。

1 个答案:

答案 0 :(得分:1)

看看这里:

SCCMReports = New ReportSettings
UserData.text = SCCMReports.UserSignedInto

SCCMReports表单何时向用户显示?由于它从未显示过,其tbUSI.Text值当然是空的,因为用户从未有机会输入文本。

听起来您需要引用{em>现有的 ReportSettings实例,而不是创建 new 实例。你在哪里有那个现有的实例?

如果Form1在另一个代码块中创建了实例,请将其存储在Form1上的类级别成员中(可能称为SCCMReportsInstance或类似的东西)。创建实例时,将其设置为该属性的值并在代码中引用该属性:

UserData.text = Me.SCCMReportsInstance.UserSignedInto

如果ReportSettings表单正在创建Form1的实例,那么它可以将引用传递给自己。你仍然在Form1上有一个属性,它只会在构造函数中设置。像这样:

Sub New(ByVal sccmReportsInstance As ReportSettings)
    Me.SCCMReportsInstance = sccmReportsInstance
End Sub

因此,在初始化Form1实例时,您将传递引用:

Dim form1 As Form1
form1 = New Form1(Me)
form1.Show()

无论如何,您需要访问所显示表单的现有实例才能访问其属性。新实例将具有这些属性的新版本,并且不具有相同的值。