FormClosed verhindern wenn etwas nicht stimmt ?!

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    FormClosed verhindern wenn etwas nicht stimmt ?!

    Hallo zusammen,

    ich habe folgenden Code:

    VB.NET-Quellcode

    1. Private Sub Form1_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
    2. If Button2.Text = "Trennen" Then
    3. MsgBox("Du musst erst die bestehende Verbindung trennen!", MsgBoxStyle.Critical, "Verbindung")
    4. Else
    5. listener.Stop()
    6. My.Settings.last_ip = TextBox1.Text
    7. My.Settings.last_chat = RichTextBox1.Text
    8. My.Settings.Save()
    9. My.Settings.Reload()
    10. Application.Exit()
    11. End If
    12. End Sub


    Und wenn der Button2.Text = "Trennen" ist soll er die Form NICHT schließen aber eben die MsgBox anzeigen.
    Wenn der Button2.Text = "Verbinden" ist, soll er die Form ganz normal schließen und das macht er auch.

    Aber mein Anliegen ist halt wie ich es schaffe, dass die Form NICHT geschlossen wird wenn der Button2.Text "Trennen" beinhaltet ?
    Wenn ich das so mache...

    VB.NET-Quellcode

    1. Private Sub Form1_FormClosed(ByVal sender As Object, ByVal e As FormClosingEventArgs)
    2. If Button2.Text = "Trennen" Then
    3. If MessageBox.Show(Me, "Du musst erst die bestehende Verbindung trennen!", "Verbindung", MessageBoxButtons.OKCancel) <> DialogResult.OK Then
    4. e.Cancel = True
    5. End If
    6. Else
    7. listener.Stop()
    8. My.Settings.last_ip = TextBox1.Text
    9. My.Settings.last_chat = RichTextBox1.Text
    10. My.Settings.last_color_box = RichTextBox1.BackColor
    11. My.Settings.last_color_text = RichTextBox1.ForeColor
    12. My.Settings.Save()
    13. My.Settings.Reload()
    14. Application.Exit()
    15. End If
    16. End Sub


    gehts trotzdem zu ohn das überhaupt was kommt :D
    Du bist immer noch im Form1_FormClosed nicht aber im Form1_FormClosing.
    Im Form1_FormClosed ist es schon zuspät, dort ist die Form schon weg!
    Im übrigen kannst du es auch gleich als einzeiler schreiben:

    VB.NET-Quellcode

    1. e.Cancel = MessageBox.Show(Me, "Du musst erst die bestehende Verbindung trennen!", "Verbindung", MessageBoxButtons.OKCancel) <> DialogResult.OK

    VB.NET-Quellcode

    1. Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As FormClosingEventArgs)
    2. If Button2.Text = "Trennen" Then
    3. If MessageBox.Show(Me, "Du musst erst die bestehende Verbindung trennen!", "Verbindung", MessageBoxButtons.OKCancel) <> DialogResult.OK Then
    4. e.Cancel = True
    5. End If
    6. Else
    7. listener.Stop()
    8. My.Settings.last_ip = TextBox1.Text
    9. My.Settings.last_chat = RichTextBox1.Text
    10. My.Settings.last_color_box = RichTextBox1.BackColor
    11. My.Settings.last_color_text = RichTextBox1.ForeColor
    12. My.Settings.Save()
    13. My.Settings.Reload()
    14. Application.Exit()
    15. End If
    16. End Sub


    Geht immernoch OHNE eine Message zu und verabschiedet sich schneller als ein Furz im Wind :'D

    VB.NET-Quellcode

    1. If MessageBox.Show(Me, "Du musst erst die bestehende Verbindung trennen!", "Verbindung", MessageBoxButtons.OK) = DialogResult.OK Then
    2. e.Cancel = True
    3. End If


    klappt... vielen dank
    Application.Exit() schießt dein Programm ab. Wenn das Hauptfenster geschlossen wird .Close() wird das Programm auch beendet da brauchste dein Application.Exit() nicht.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    @mrMo Jou.

    PlatinSecurity schrieb:

    VB.NET-Quellcode

    1. Application.Exit()
    Nimm die Zeile einfach raus.
    Und wenn Du dsas Schließen eines Dialogs verhindern willst, setze außerdem

    VB.NET-Quellcode

    1. Me.DialogResult = DialogResult.None
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!