簡體   English   中英

WP7退出時的運行方法

[英]WP7 running method on exit

我的WP7中有一個頁面,其中包含一些文本框。 當按返回鍵時,將運行此方法來保存內容:

 protected override void OnBackKeyPress(System.ComponentModel.CancelEventArgs e)
    {
        var settings = IsolatedStorageSettings.ApplicationSettings;

        settings["remZone"] = txtBoxZone.Text;
        settings["remSpace"] = txtBoxSpace.Text;
    }

問題是某些用戶不會按“后退”按鈕,而是會按“主頁”按鈕退出應用程序,因此不會保存內容。

我認為,如果可能的話,有兩種解決方法:1.是否存在可以在按下主屏幕按鈕時運行此方法的函數,例如onBackKeyPress。 2.在用戶輸入文本框時,是否有一種簡單的方法來保存文本框的內容?

謝謝。

編輯:

解決方案是這樣的:

   protected override void OnNavigatingFrom(NavigatingCancelEventArgs e)
     {
         var settings = IsolatedStorageSettings.ApplicationSettings;

         settings["remZone"] = txtBoxZone.Text;
         settings["remSpace"] = txtBoxSpace.Text;
     }

解決您的問題的最簡單方法是重寫Page.OnNavigatingFrom方法。

這里更多

Backpress不是您收到的唯一事件,還有一個App.Deactivated事件,該事件可以確保您的應用程序以任何方式退出屏幕時都會被調用。

在您的Page(.ctor或Loaded事件處理程序)中,將處理程序附加到該事件,並在該處理程序中收集在關閉時必須存儲的所有內容。 這是確保它不會蒸發的最簡單方法。 只要記住要在Page.Unloaded上取消鏈接該處理程序,否則您將大大泄漏內存/資源!

順便說一句。 編碼

var settings = IsolatedStorageSettings.ApplicationSettings;

settings["remZone"] = txtBoxZone.Text;
settings["remSpace"] = txtBoxSpace.Text;

在某些情況下還不夠。 如果確實需要確保設置保持不變,則必須在更改后手動調用Save():

var settings = IsolatedStorageSettings.ApplicationSettings;

settings["remZone"] = txtBoxZone.Text;
settings["remSpace"] = txtBoxSpace.Text;

settings.Save(); // think about it, you may want it!

這是因為設置是在某些特定的情況下存儲的,例如應用程序退出,邏輯刪除等。我不記得它們在停用時會被保存,因此僅按Back可能不會將它們保存到ISO。 更重要的是,如果您設置了它們並且應用程序崩潰(例如,由於未處理的異常而導致)或電池/電源出現故障,或者用戶只是關閉了手機,它們將不會被存儲!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM