VB.net: ein Fenster oeffnen und das alte schließen

Hallo,

ich habe eine Startformular und öffne daraus mit fenster2.show ein zweites Fenster. Nachdem das zweite Fenster geöffnet wurde möchte ich das erste schließen. Wie macht man das? mit .close? Doch wie heißt das erste Fenster damit ich es ansprechen kann? Beim zweiten ist es kein Problem da ich den namen ja mit DIM fenster2 as new form deklariert habe. Doch wie ich das erste Fenster ansprechen kann weiß ich nicht. Da es ja automatisch angezeigt wird.

Es wäre sehr nett wenn mit jemand kurzfristig, bei der Anfängerfrage helfen kann.

Gruß
Marco

Hallo Marco,

ganz so einfach wird es nicht. Wenn Du das erste Fenster nach dem Befehl fenster2.Show() mit Close() schließt, ist das zweite automatisch auch mit tot, da es im ersten Fenster definiert wurde.
Du musst ein fensterunabhängiges Startmodul schreiben, das die Fenster instanziiert und am Leben hält.
Im Buch Visual Basic .NET von Michael Kofler (ISBN 3-8273-1982-X Buch anschauen) ist das im Kapitel 15.3.2 ganz gut beschrieben.

Gruß
Thomas

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Benötige weitere hilfe
Gibt es von dem Buch auch im Internet was zu lesen? Wollte mir nur um was auzuprobieren nicht gleich das Buch kaufen.

Habe es jetzt so probiert
in einem Modul dies geschrieben:

Imports Microsoft.VisualBasic
Imports System.Windows.Forms
Imports System.Console
Imports System.Drawing

Module Module1
Class test
Shared Sub main()
Dim logo As New frmhaupt
Dim logo2 As New frmhaupt2
Application.Run(logo)
End Sub
End Class
End Module

Es startet auch schön nur wie kann ich auf logo2 zurück greifen? Wenn ich im Fenster zum Beispiel mit einem Button logo2.show aufrufen bekomme ich einen Fehler das logo2 nicht deklariert ist.

Wäre nett wenn du/ihr helfen könntet.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Marco,

das Buch gibt’s meines Wissens leider nicht im Internet.
Dein Fenster „logo2“ kann er deshalb nicht kennen, weil es weder im Fenster „logo“ deklariert ist noch von der main-Routine übergeben wurde.

Die Definition der Klasse test kannst Du Dir im Modul sparen. Der Knackpunkt ist, dass Du

Application.Run()

ohne das Startfenster als Parameter angeben musst.

Module Module1
 Sub main()
 Dim f1 As New Form1

 f1.Show()
 Application.Run()
 End Sub
End Module

In der Form1 kannst Du dann weitere Fenster anzeigen.

Am Ende der Anwendung musst Du allerdings

Application.Exit()

ausführen, damit alles weg ist.

Gruß
Thomas

Gibt es von dem Buch auch im Internet was zu lesen? Wollte mir
nur um was auzuprobieren nicht gleich das Buch kaufen.

Habe es jetzt so probiert
in einem Modul dies geschrieben:

Imports Microsoft.VisualBasic
Imports System.Windows.Forms
Imports System.Console
Imports System.Drawing

Module Module1
Class test
Shared Sub main()
Dim logo As New frmhaupt
Dim logo2 As New frmhaupt2
Application.Run(logo)
End Sub
End Class
End Module

Es startet auch schön nur wie kann ich auf logo2 zurück
greifen? Wenn ich im Fenster zum Beispiel mit einem Button
logo2.show aufrufen bekomme ich einen Fehler das logo2 nicht
deklariert ist.

Wäre nett wenn du/ihr helfen könntet.

Vielen Dank!!!
Vielen Dank!

Hat super funktioniert!

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Benötige weitere hilfe für drittes Formular
Hallo,

das ganze hat gut geklappt und ich habe aus der Form1 die Form2 gestartet und die Form1 mit .close geschlossen. Jetzt möchte ich aus der Form2 ein weiteres Formular (Form3) öffnen und Form2 schließen.

Wenn ich das ganze mit
Dim f3 As New Form4
f3.Show()
me.close

mache werden wieder alle Fenster geschlossen.

Was mache ich falsch?

Tschoe…
Marco

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Marco,

sieh zu, dass Du die Form-Verwaltung im Startmodul behandelst, indem Du z.B. dort eine ArrayList auf Modulebene definierst, in die Du die „lebenden“ Forms stellst. Du machst im Startmodul noch eine Methode, der Du neue Forms als Parameter übergibst und die diese Form dann in die ArrayList aufnimmt.

Gruß
Thomas

Hallo,

das ganze hat gut geklappt und ich habe aus der Form1 die
Form2 gestartet und die Form1 mit .close geschlossen. Jetzt
möchte ich aus der Form2 ein weiteres Formular (Form3) öffnen
und Form2 schließen.

Wenn ich das ganze mit
Dim f3 As New Form4
f3.Show()
me.close

mache werden wieder alle Fenster geschlossen.

Was mache ich falsch?

Tschoe…
Marco