2012-08-30 61 views
-1

我想要做的就是從vb.net Forms的父窗體訪問我的屬性。 但它不會讓我做未將對象引用設置爲對象的實例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 問候

+0

爲了節省一些擊鍵,可以使用Dim formParent1作爲新的formParent()代替。 – Laoujin

+0

可能重複[什麼是NullReferenceException,我該如何解決它?](http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-doi-i-fix-it) – Plutonix

回答

3

如果我理解正確的話,該代碼是內部的formParent的子form。要使用對當前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 
+0

我幾乎認爲這是答案,但顯然這種方式不適用於事件 – deltu100

+0

可能你解釋我什麼意思'doensn't在一個事件'工作嗎? – Steve

+0

Private Sub SearchBtn_Click(發件人爲System.Object,e爲System.EventArgs)處理SearchBtn.Click - 如果我把參數放在它之間,它說它無法處理它 – deltu100

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 
+0

在父級中有一些加載選項,如果我使用「新」,那麼它不會加載到數據庫datacontext中。因爲你看,這個孩子的形式是一個searchForm。我想將search.text和選項發送到父級,而無需再次加載數據庫。 – deltu100

+0

@ deltu100好吧我想我現在明白你想要做什麼 - 看看我編輯的答案 –

+0

會給這個試試 – deltu100

相關問題