-1

私がしたいのは、vb.net フォームの親フォームから自分のプロパティにアクセスすることだけです。でもそれはさせてくれない

 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

これで、別の 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 に答える