2011-09-11 52 views
2

我在WP7中有一个包含一些文本框的页面。当按下返回键此方法运行保存的内容:退出WP7运行方法

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

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

的问题是一些用户不按后退按钮,但会按home键退出应用程序,所以内容不被保存。

我认为如果可能的话,有两个途径: 1.是否有一个函数会在按下home按钮时运行此方法,如onBackKeyPress。 2.当用户输入文本框时,是否有简单的方法来保存文本框的内容?

谢谢。

编辑:

溶液是这样的:

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

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

回答

5

最简单的解决方案,您的问题将覆盖Page.OnNavigatingFrom方法。

more here

+0

谢谢,这就是我正在寻找的东西! –

-1

有在游戏的方法,其可以被重写称为OnExiting

只是重写它,并希望你想在它。

http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.game.onexiting.aspx

编辑:我只是意识到你可能使用Silverlight。在这种情况下,this could也许符合您的需求

+0

嗨,谢谢你的回答,并且是基于silverlight的。你有没有尝试过的替代解决方案,因为我不知道在Windows Phone中存在ExitEventArgs? –

1

Backpress是不是您收到的唯一的事件,也有一个App.Deactivated事件,这是保证只要你的应用程序以任何方式熄灭屏幕被调用。

在您的Page(无论是.ctor还是Loaded事件处理程序)中,将处理程序附加到该事件,并在该处理程序中收集您在关闭时必须存储的所有内容。这是确保它不会蒸发的最简单的方法。只记得取消链接该处理器在Page.Unloaded上,否则你将大大泄漏内存/资源!

顺便说一句。代码

var settings = IsolatedStorageSettings.ApplicationSettings; 

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

在某些情况下是不够的。如果你真的需要,以确保您的设置依然存在,您必须手动更改后调用保存():

var settings = IsolatedStorageSettings.ApplicationSettings; 

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

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

这是因为设置保存在一些特定的场合,例如,应用程序退出,墓碑等。我不记得他们在停用时会被保存,所以只要按下后退可能不会将它们保存到ISO。更重要的是,如果您设置了应用程序并且应用程序崩溃 - 例如由于未处理的异常 - 或者电池/电源关闭,或者用户简单地关闭了电话 - 它们将不会被存储!