Forum: PC-Programmierung [VB.net] Dialogfeld beim Form schliessen ABER beim herunterfahren automatisch schliessen


von ENDD (Gast)


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?

von Dirk K. (merciless)


Lesenswert?


von bluppdidupp (Gast)


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)

von Georg (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.