[Text] Mit mehreren Formen arbeiten Verfasst am: 03.08.2007, 18:25
Mit mehreren Formen arbeiten
1. Allgemeines
Da man immer wieder mit mehreren Formen arbeiten muss, aber viele nicht wissen wie man das am besten macht, hab euch mal ein kleines Tutorial geschrieben. Mehrere Formen braucht man vorallem dann, wenn ein weiteres Fenster aufmachen will und man das alte trotzdem noch sehen soll (z.b ein Optionsmenu) , bzw die Fenster so verschieden sind, dass es zu viel Aufwand wäre, alle Objekte per .Visible sichtbar bzw unsichtbar zu machen.
2. Verwendung
Zuerst muss man natürlich eine neue Form hinzufügen, per Rechtsklick auf das akutelle Projekt im Projektmappenexplorer -> Hinzufügen -> Windows Form, dann noch Namen eingeben -> Fertig
Ich nenne unsere Form mal Optionsmenu, die Hauptform ist bei mir Mainform
Wir könnten nun einfach Form2.Show und Form2.Close verwenden und fertig, aber die Methode ist nicht sehr praktisch, zumal die 2 Form dann nicht wirklich zu ist, sondern noch im Hintergrund läuft und einen Haufen an Speicher verbraucht.
Daher deklarieren wir uns erstmal eine Variable als Form:
Code:
Public Form2 As Optionsmenu
Nun kommen die beiden Subs zum Öffnen bzw. Schließen der Form:
Code:
Private Sub OpenForm2()
Form2 = New Optionsmenu()
Form2.Show()
End Sub
Private Sub CloseForm2()
Form2.WindowState = FormWindowState.Minimized
Form2.Close()
End Sub
Aufrufen geht dann einfach so:
Code:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e _
as System.EventArgs) Handles Button1.Click
OpenForm2()
End Sub
Bzw. das ganze mit CloseForm2
Das Minimieren dient dazu, dass der Garbage Collector die Form aus dem Ram schaufelt, sonst würde die Applikation immer mehr Ram brauchen, umso öfter man die 2. Form aufruft und wieder schließt.
Es muss auch andere Wege geben sie aus dem Ram zum Entladen, aber das ist die einzig mir bekannte ^^ Seltsamerweiße bleibt der Ramverbrauch trotzdem sehr hoch, wenn man die 2. Form vor dem Minmieren, per .Visible unsichtbar macht. Daraus bin noch nicht so schlau geworden, wenn mir wer weiterhelfen kann, wäre ich dankbar, dann kann ich das Tutorial verbessern ^^
Das ganze lässt sich natürlich auf beliebig viele Formen erweitern.
3. Von einer Form Daten an eine Andere senden
Nun das ist im Grunde kein Problem, soll es an eine Variable sein, muss diese nur Public deklariert sein, also z.b dieser Code in der Mainform:
Code:
Public Passwort As String
Geändert wird die Variable von der 2. Form (Optionsmenu) so:
Code:
Mainform.Passwort = "1337"
Wenn es sich um eine Eigenschaft eines Objektes handelt, macht man es genauso, einfach in der 2. Form
Nice Nice. VB-Net Tutorials können wir gut gebrauchen hier.
Das mit dem vollständigen entladen der Formen sollte man bei VB6 auch machen wenn man sie nicht mehr braucht.
:thumbsup: für ein gelungenes Texttutorial. _________________ Wer nicht auf seine Weise denkt, denkt überhaupt nicht. (Oscar Wilde)
Plateyno Newbie
Anmeldedatum: 07.01.2010 Beiträge: 1
Verfasst am: 07.01.2010, 16:11
Private Sub CloseForm2()
Form2.WindowState = FormWindowState.Minimized
Form2.Close()
End Sub
genau das funktioniert bei mir irgendwie nicht... da kommt immer "Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt" dabei hab ich alles deklariert usw. und open funktioniert... was kann das problem sein? _________________