Existují dvě možnosti. Proměnnou v prvním formuláři lze nadeklarovat jako statickou (klíčové slovo Shared), což znamená, že k ní lze přistupovat i bez vytvoření instance třídy ve které je definovaná (formulář). Z programátorského hlediska je to ale prasárna.
Public Partial Class Form1
Public Shared N As Integer
Private _childForm As Form2
Private Sub ShowForm2
If _childForm Is Nothing Then
_childForm = New Form2
End If
_childForm.Show()
End Sub
End Class
Public Partial Class Form2
Private Sub IncrementN
Form1.N += 1
End Sub
End Class
Druhá možnost je v konstruktoru druhého formuláře (Sub New) předat platnou instanci prvního formuláře a tak potom bude možné přistupovat k té globální instanční proměnné prvního formuláře.
Public Partial Class Form1
Public N As Integer
Private _childForm As Form2
Private Sub ShowForm2
If _childForm Is Nothing Then
_childForm = New Form2(Me)
End If
_childForm.Show()
End Sub
End Class
Public Partial Class Form2
Private _parentForm As Form1
Public Sub New (ByVal parentForm As Form1)
_parentForm = parentForm
End Sub
Private Sub IncrementN
_parentForm.N += 1
End Sub
End Class
|