Wszystko, co chcę zrobić, to uzyskać dostęp do mojej właściwości z formularza nadrzędnego w formularzach vb.net. ale mi to nie pozwala

 Dim formParent1 As formParent

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

Ale daje błąd w formParent1.propertyname = 1. Mówiąc „Odwołanie do obiektu nie jest ustawione na instancję obiektu”.

Ale nie mogę użyć

Dim formParent1 as formParent = new formParent()

Jak mogę uzyskać dostęp do tej właściwości, jestem nowy w VB.net pozdrawiam

-1
deltu100 30 sierpień 2012, 17:25

2 odpowiedzi

Najlepsza odpowiedź

Jeśli dobrze rozumiem, ten kod znajduje się w potomnej formie formParent. Aby użyć referencji do bieżącego formParent, musisz przekazać w formularzu potomnym referencję do bieżącego formParent.

Tak więc w formularzu formParent, kiedy zaczynasz wykonywanie formularza podrzędnego, napisz to:

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

W formularzu konstruktora potomnego zapisz przekazaną referencję do zmiennej globalnej 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

Teraz możesz użyć referencji formParent1 wewnątrz formularza podrzędnego bez inicjowania innego formParent Na przykład zakładając, że formParent1 zawiera właściwość publiczną o nazwie SearchResult, po zakończeniu wyszukiwania wywołujesz:

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
3
Steve 30 sierpień 2012, 18:26

Musisz tylko zachować odniesienie do instancji formularza w zmiennej globalnej.

Utwórz moduł - w nim umieść:

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

Następnie możesz uzyskać dostęp do referencji formularza nadrzędnego w formularzu wyszukiwania:

GlobalParentForm.SearchProperty = searchText
1
Matt Wilko 30 sierpień 2012, 19:39