Alle formen schließen

  • VB.NET

Es gibt 22 Antworten in diesem Thema. Der letzte Beitrag () ist von SystemUnknow.

    Alle formen schließen

    guten morgen leute ^^+

    ich habe folgenden wunsch bzw. folgendes problem...

    wenn ich meine hauptform schließe will cih das alle anderen formen von meinem projekt auch mit zu gehen und mein projekt sich sozusagen schließt

    zuvor mach ich noch eine abfrage:

    VB.NET-Quellcode

    1. Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
    2. If MsgBox("Wollen Sie sie wirklich das Programm Beenden?", MsgBoxStyle.YesNo Or MsgBoxStyle.Question, "Emailsupport Close?") = MsgBoxResult.Yes Then
    3. e.Cancel = False
    4. MsgBox("geschlossen")
    5. Else
    6. e.Cancel = True
    7. End If
    8. End Sub


    wenn ich auf ja drücke dann soll er all meine offenen formen schließen und programm aus nmachen^^

    bin mir sihcer ihr könnt mir helfen

    lg datsspeed :thumbsup:
    hab das mal beim googlen gefunden. musste halt probieren ob das geht

    VB.NET-Quellcode

    1. 'close all sub forms
    2. For i = System.Windows.Forms.Application.OpenForms.Count - 1 To 1 Step -1
    3. Dim form As Form = System.Windows.Forms.Application.OpenForms(i)
    4. form.Close()
    5. Next i
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten
    ehm problem : #

    VB.NET-Quellcode

    1. Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
    2. If MsgBox("Wollen Sie sie wirklich das Programm Beenden?", MsgBoxStyle.YesNo Or MsgBoxStyle.Question, "Emailsupport Close?") = MsgBoxResult.Yes Then
    3. e.Cancel = False
    4. Application.Exit()
    5. Else
    6. e.Cancel = True
    7. End If
    8. End Sub



    jetzt kommt iwie 2 mal die abfrage ob ich wirklich schließen will ... O.o

    VB.NET-Quellcode

    1. public closestatus as boolean = true
    2. Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
    3. If closestatus = true then
    4. If MsgBox("Wollen Sie sie wirklich das Programm Beenden?", MsgBoxStyle.YesNo Or MsgBoxStyle.Question, "Emailsupport Close?") = MsgBoxResult.Yes Then
    5. e.Cancel = False
    6. closestatus = false
    7. Application.exit
    8. Else
    9. e.Cancel = True
    10. End If
    11. End If
    12. End Sub
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten
    Hi,

    benutz lieber MessageBox.Show() anstatt MsgBox(). Dann sieht das Ganze etwa so aus (frag auch lieber ab, ob auf "Nein" gedrückt wurde - das macht den Code ein bisschen kürzer, weil du jetzt nicht mehr explizit e.Cancel auf False setzen musst).
    So könnte das Ganze dann aussehen:

    VB.NET-Quellcode

    1. Private Sub Form1_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
    2. If MessageBox.Show("Beenden?", "Abfrage", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.No Then
    3. e.Cancel = True
    4. End If
    5. End Sub


    MfG
    Turtle10
    Hallo, hatte es auch einmal getestet.
    Durch Application.exit wird noch einmal closing angesprungen.
    Die nochmalige Anzeige der Msg zu umgehen wurde schon oben genannt.
    Nach meiner Meinung müßte es aber etwas bessere geben!
    ..habe aber auch nichts besseres bis jetzt.
    Gruß
    äähm wieso stellst du das nicht einfach in den Projekteigenschaften ein?? Da kannste festlegen wann die Fenster zugehen sollen, also Programm beenden wenn startform geschlossen wird oder wenn das letzte Fenster des Programms geschlossen wird
    Bilder
    • close.png

      14,73 kB, 456×328, 288 mal angesehen
    Muss hier auch nochmal eine Antwort reinsetzen.
    Ich habe ein Programm, wo ich im FormClosing event

    VB.NET-Quellcode

    1. e.Cancel = True
    2. Me.Hide()
    3. frmAbout.Show()

    stehen habe.

    Wenn ich das Programm dann in frmAbout endgültig schließe, benutze ich

    VB.NET-Quellcode

    1. End


    Sofern ich da nichts übersehen habe, werden dabei alle Formen beendet.
    Nüja, ich finde das schon recht praktisch. In der Mainform verhindert ja e.cancel=True das mein Programm geschlossen wird, durch Application.Exit würde es dann immer wieder zu frmAbout zurückgehen. Mit einem einfachen End erspare ich mir also das Setzen und Abfragen einer Statusvariable. So betrachtet ist das doch iwie Elegant, oder? XD

    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. Application.Exit()
    4. End Sub
    5. Private Sub Form1_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
    6. MessageBox.Show("Closed")
    7. End Sub
    8. Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
    9. MessageBox.Show("Closing")
    10. End Sub
    11. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    12. End
    13. End Sub


    Bei exit wird Close und closing ausgewertet,
    bei end Sofortabbruch
    Nach meiner Meinung sollte end nicht benutzt werden,auch wenn es manchmal einfacher erscheint.

    MfG

    fraju schrieb:

    Bei exit wird Close und closing ausgewertet,
    bei end Sofortabbruch
    Nach meiner Meinung sollte end nicht benutzt werden,auch wenn es manchmal einfacher erscheint.

    MfG
    Generell benutze ich End auch nicht, aber in diesem Fall ist frmAbout ja nur der abschließende Splash screen, der auf jedenfall ausgegeben werden soll, wenn das Programm beendet wird. Aber kannst du eventuell genauer darauf eingehen, wieso ich End nicht verwenden sollte?