VB.NET Anfängerfrage zu Gültigkeitsbereichen

Hallo,
bin mal wieder dabei mich in Programmierung zu Versuchen.
Hab eine Form1, und eine Klasse in der ich meine DB-Anbindung drin habe. In Form1 wird ein Objekt mydbobj erzeugt, welches die verbindung aufbaut.
Wenn ich jetzt in Form2 wechsel, kann ich mein Objekt nicht mehr aufrufen… Oder muss es nur an anderer Stelle, vielleicht nicht in Form1 erstellen?

Bisher mach ich es so:

Public Class Form1
Public mymysql As New MySQLClass

In Form2 kann ich dann nicht aufrufen

mymysql.get…

Ist sicherlich ganz einfach, oder?

Sorry für die Anfängerfrage :wink:

MM

Hallo Matthias,

Hallo,
bin mal wieder dabei mich in Programmierung zu Versuchen.
Hab eine Form1, und eine Klasse in der ich meine DB-Anbindung
drin habe. In Form1 wird ein Objekt mydbobj erzeugt, welches
die verbindung aufbaut.

Das ist gut so. Man sollte immer die GUI von den Daten versuchen zu trennen :smile:

Wenn ich jetzt in Form2 wechsel, kann ich mein Objekt nicht
mehr aufrufen… Oder muss es nur an anderer Stelle,
vielleicht nicht in Form1 erstellen?

Das ist so weit richtig, da die Referenz nur in Form1 zur Verfügung steht! Möchtest Du nun aus einem anderem Formular oder aus einer anderen Klasse auf die Refernenz hinzugreifen, so musst du sie ihr übergeben :smile:
Alternativ kannst du sie auch als Shared Member allgemeingültig declarieren, aber davon würde ich abraten.

Für Dein Vorhaben, implementiere einfach in der Form2 eine Eigenschaft, welche die Referenz entgegennimmt. Beim instanzieren der Form2 setz du dann die Eigenschaft und kannst sie dann beliebig in der Form2 nutzen :smile: Hört sich vielleicht kompliziert an? Nein ist es nicht! Hier ein Demo zur Veranschaulichung

'Form1
Public Class Form1

 Private MyCon As Connection

 Private Sub Form1\_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
 MyCon = New Connection
 End Sub

 Private Sub Button1\_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
 Dim MyForm As New Form2
 MyForm.MyConnection = MyCon
 MyForm.ShowDialog()
 End Sub
End Class

'Form2
Public Class Form2

 Private MyCon As Connection = Nothing

 Protected Friend WriteOnly Property MyConnection As Connection
 Set(ByVal value As Connection)
 MyCon = value
 End Set
 End Property

End Class

Wie Du siehst kannst du nun in Form2 über die Variable MyCon auf die Refernez zugreifen :wink:

MfG Alex