Nisam bio tu da ti ranije odgovorim.
Elem, sto se Sajinog reesnja tice, ok je osim poslednjeg dela. Nema nikakvog razloga da se koristi CallByName a nije type safe. Umesto toga je bolje koristiti:
Code (vbnet):DirectCast(Me.Owner.Owner, Form1).Nesto()
Ili jos bolje:
Code (vbnet):
If Me.Owner IsNot Null AndAlso Me.Owner.Owner IsNot Null AndAlso Me.Owner.Owner Is Form1 Then
DirectCast(Me.Owner.Owner, Form1).Nesto()
End If
To je sto se tice resavanja konkretne situacije.
Sistematski, bolje resenje je da ti druga klasa vrati podatke o filtriranju u prvu pa onda prva pozove trecu. Tako svaka radi svoj posao. Prva je glavna, druga dobavlja filter, treca trazi. Nesto ovako (sorry ako ima po neka sintaksna greska, ne radim u vb-u godinama):
Klasa za filter:
Code (vbnet):
Class PeopleFilter
Public Property FirstName As String
Public Property LastName As String
End Class
U Form2 i u Form3:
Code (vbnet):Public Property Filter as PeopleFilter
Kada se klikne na OK (ili sta vec imas) u Form2, popunis Filter.
U Form1:
Code (vbnet):
Dim FilterForm As New Form2
If FilterForm.ShowDialog() = DialogResult.OK AndAlso FilterForm.Filter IsNot Null Then
Dim SearchForm As New Form3
SearchForm.Filter = FilterForm.Filter
SearchForm.ShowDialog()
End If
Naravno, to moze da se prosiruje i uopstava dalje, zavisno od slozenosti projekta, ali ovo je generalna ideja.