[VB.net] Dialogfeld beim Form schliessen ABER beim herunterfahren automatisch schliessen

Gast #6571185
Lesenswert?
• ▲
▼
Hallo Leute,

Ich fragen bei einem VB.net Programm das Form Closing Event ab.
Tritt es auf, so Frage ich über eine Msgbox ab, ob der Benutzer wirklich 
schliessen will.

Danach schliesse ich die Anwendung über END, oder breche das Schliessen 
mittels e.cancel = true ab.

So weit so gut.

Fahre ich jetzt aber den PC herunter, so bleibt das Programm natürlich 
bei der MSGBOX hängen und "muss beendet werden".

Wie kann ich dem aus dem Weg gehen?
Gast #6571255
Lesenswert?
• ▲
▼
Einfach das CloseReason-Element des Events abfragen:
https://docs.microsoft.com/de-de/dotnet/api/system.windows.forms.closereason?view=net-5.0

In der Regel wirst du nur bei e.CloseReason = CloseReason.UserClosing 
abfragen wollen, ob der User wirklich schließen will.

---

Je nach Anwendung kann btw. auch Sinn machen "Application Recovery and 
Restart" zu implementieren:
https://docs.microsoft.com/en-us/windows/win32/recovery/using-application-recovery-and-restart
Insbesondere kann man dann bei automatischen Windows-Updates den 
Anwendungszustand vorher sichern und die Anwendung wird nach Reboot 
durch Windows wieder gestartet und kann den Zustand wiederherstellen.
(Nutze kein vb.net, aber das hier scheint in die Richtung zu gehen: 
https://www.vbforums.com/showthread.php?712961-ARR-Application-Recovery-and-Restart)
Gast #6572453
Lesenswert?
• ▲
▼
bluppdidupp schrieb:
> In der Regel wirst du nur bei e.CloseReason = CloseReason.UserClosing
> abfragen wollen, ob der User wirklich schließen will.

Ganz so einfach ist das nicht, z.B. wenn Daten verändert wurden, aber 
nicht gespeichert, ist das kommentarlose Schliessen beim Herunterfahren 
auch keine sinnvolle Lösung. Prominentes beispiel ist der Editor. Eine 
allgemeingültige Lösung gibt es nicht.

Georg

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.