Application_Deactivated abbrechen
lima-city → Forum → Programmiersprachen → Programmieren mit .NET & Mono
abbrechen
anwendung
code
dialog
eigene routine
frage
gespeicherte sachen
hit
item
markieren
not
schlechte nachricht
sender
shell
show
stellen
string
tun
url
verhindern
-
Hey,
ich schreibe gerade eine kleine App für das Windows Phone 7, und jetzt soll der User gewarnt werden wenn er die Anwendung verlässt oder beendet, dass nicht gespeicherte Sachen verlogen gehen.
Auch klappt die Nachfrage einwandfrei. Nur ist die Anwendung bereits beendet/minimiert wenn der Dialog kommt, dh. ich kann es nicht mehr abbrechen.
Wie kann ich nun (basierend auf der Usereingabe) das Schließen verhindern.
Mein Code in der App.xaml.cs
private void Application_Deactivated(object sender, DeactivatedEventArgs e) { if (!closingAllowed()) { //abbrechen } } // Code to execute when the application is closing (eg, user hit Back) // This code will not execute when the application is deactivated private void Application_Closing(object sender, ClosingEventArgs e) { if (!closingAllowed()) { //abbrechen } } private bool closingAllowed() { PhoneApplicationService phone = PhoneApplicationService.Current; if (phone.State.ContainsKey("confirm")) { object c; if (phone.State.TryGetValue("confirm", out c)) { if ((string)c == "true") { if (MessageBox.Show("If you leave the Application without saving, your changes will be lost. Are you sure you want to leave ?", "Unchanged Items", MessageBoxButton.OKCancel) == MessageBoxResult.Cancel) { return false; } return true; } } } return true; }
Dabei wird an dieversen Stellen der Wert (für den Key confirm) für PhoneApplicationService.State auf true bzw false (als String) gesetzt.
Eingetlich ist meine Frage was muss an die Stellen "//abbrechen" um das schließen zu verhindern.
Beitrag zuletzt geändert: 30.6.2011 16:06:11 von andre-morillon -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Dazu musst du lediglich das Event als bereits gehandled markieren, per
// private void frmMain_FormClosing(object sender, FormClosingEventArgs e) { e.Cancel = true; }
und das wars schon. Die Anwendung wird nun keine eigene Routine zum Beenden mehr starten. Deshalb solltest du das auch nur tun, wenn der User das Abbrechen bestätigt.
Liebe Grüße
- VampireSilence -
Hey, sieht ja cool aus.
Aber bei mir gibt es (in keinem NS) die Klasse FormClosingArgs. Auch müsste ich wissen, wohin ich diese Funktion kopiere. -
Hallo andre-morillon,
Du hast recht, dass es FormClosingEventArgs auf WP7 nicht gibt. Dafür gibt es ClosingEventArgs. Die schlechte Nachricht dabei ist aber, dass es keine ClosingEventArgs.Cancel Property gibt und damit keine Möglichkeit das Schließen auf dem üblichen Weg aufzuhalten. (gleiches gilt für DeactivatedEventArgs). Ich denke, dass Microsoft das mit Absicht nicht vorgesehen hat. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage