instanz einer form schließen.Wie?

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von mikeb69.

    instanz einer form schließen.Wie?

    Hallo allerseits,
    ich bin ein Anfänger in VB und habe jetzt ein folgendes Problem, den ich nicht in den Griff bekomme. Ich habe ein Programmhaupfenster mit Menüs, aus dem mit Hilfe eines Menüs ein Fenster (form) mit einem Puzzlespiel gestartet wird. wenn das Spiel erfolgreich beendet wird erscheint ein Fensterchen mit der Frage, ob man noch ein Spiel spielen will ja/nein. Drückt man nein, wird alles geschlosen. Drückt man ja, wird eine neue Instanz vom Puzzle-Fenster (Puzzle-form) aufgemacht, die erste Instanz bleibt aber weiterhin erhalten. Wie kann ich mit hilfe des "ja-buttons" die erste Instanz (das ist doch eine andere form) schließen bevor die neue Instanz geöffnet wird. Mit formname.close() geht es nicht.
    Wäre für jede Hilfe dankbar!
    hallo,

    @alteran
    ein verstecken der form hilft ihm nicht - er will die instanz der form beenden.

    @umherum
    so etwas z.b. wird nicht funktionieren, da dann beide fenster geschlossen werden

    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. Dim f As New Form
    3. f.Show()
    4. Me.Close()
    5. End Sub

    also - wird dir nichts anderes übrigbleiben das zweite spiel aus der hauptform zu starten, genau wie das erste.
    beispiel:
    code der hauptform

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    3. startnewform()
    4. End Sub
    5. Private Sub form2_closing(ByVal sender As Object, ByVal e As System.EventArgs)
    6. Select Case CType(sender, Form).DialogResult
    7. Case Windows.Forms.DialogResult.Retry
    8. 'neue form instanzieren
    9. startnewform()
    10. Case Windows.Forms.DialogResult.No
    11. 'nichts tun
    12. End Select
    13. End Sub
    14. Private Sub startnewform()
    15. 'neue instanz der form erstellen
    16. Dim f As New Form2
    17. 'eventhandler hinzufügen um das schliessen der 2.form abfangen zu können
    18. AddHandler f.FormClosing, AddressOf form2_closing
    19. 'form anzeigen
    20. f.Show()
    21. End Sub
    22. End Class

    code der zweiten form - in deinem fall vom spiel

    VB.NET-Quellcode

    1. Public Class Form2
    2. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    3. 'irgeneinen wert zurückgeben - z.b. für neustarten
    4. Me.DialogResult = Windows.Forms.DialogResult.Retry
    5. Me.Close()
    6. End Sub
    7. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    8. 'wert für nicht neustarten zurückgeben
    9. Me.DialogResult = Windows.Forms.DialogResult.No
    10. Me.Close()
    11. End Sub
    12. End Class

    wie gesagt - nur ein beispiel.

    aber in etwa so sollte deine lösung aussehen - zumindest, wenn ich dich richtig verstanden habe.

    gruss

    mikeb69