我目前有两种表格。 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
它没有拉任何东西,我主表单上的文本框是空白的。
答案 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()
无论如何,您需要访问所显示表单的现有实例才能访问其属性。新实例将具有这些属性的新版本,并且不具有相同的值。