[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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren