-1

我要做的就是从 vb.net Forms 中的父表单访问我的属性。但它不会让我这样做

 Dim formParent1 As formParent

 Private Sub search()
 formParent1.propertyName = 1
 End Sub

但它在 formParent1.propertyname = 1 处给出错误。说“对象引用未设置为对象的实例”。

但我可能不会使用

Dim formParent1 as formParent = new formParent()

我怎样才能访问这个属性,我是 VB.net 的新手最好的问候

4

2 回答 2

3

如果我理解正确,该代码位于 formParent 的子表单中。要使用对当前 formParent 的引用,您需要在子窗体中传递对当前 formParent 的引用。

所以在 formParent 中,当你开始执行子表单时,这样写:

Dim f as formChild = new formChild(Me)
f.ShowDialog() 

在表单子构造函数中保存传递的对全局变量 formParent1 的引用

Dim formParent1 as formParent ' this is the global level reference to the parentForm'

Public Sub formChild(ByVal f as formParent)
       formParent1 = f
End Sub

现在您可以在子表单中使用引用 formParent1 而无需初始化另一个 formParent 例如,假设 formParent1 包含一个名为 的公共属性SearchResult,当您完成搜索时,您调用:

Private Sub searchBtn_Click(sender As Object, e As System.EventArgs) Handles SearchButton.Click
     Dim searchResult as String

     ' Here write the code that executes the search and set the value in searchResult variable

     ' Pass the searchResult variable to the parent form via the global reference.
     formParent1.SearchResult = searchResult
End Sub
于 2012-08-30T13:33:56.187 回答
1

您只需要在全局变量中保留对表单实例的引用。

创建一个模块 - 在里面放:

Private _globalParentForm as parentForm = Nothing

Public ReadOnly Property GlobalParentForm as parentForm
    Get
        If _globalParentForm Is Nothing Then _globalParentForm = New parentForm
        Return _globalParentForm        
    End Get
End Property

然后您可以在搜索表单中访问父表单引用:

GlobalParentForm.SearchProperty = searchText
于 2012-08-30T13:31:19.950 回答