• WP7如何退出你的程序?


    或许你会注意到,在Silverlight for Windows Phone程序中,并没有之前的类似于“App.Exit()”之类的函数用来让你退出程序。这是怎么回事儿呢?

    很简单,在Windows Phone 7中系统要求配备了硬件的“Back”键,该键用于在程序中导航(返回)到上一个页面(屏幕)或者应用程序。当菜单、对话框、搜索框、虚拟键盘等打开时,点击它则关闭菜单、对话框、搜索框和虚拟键盘等。

    当应用程序停留在该程序的第一个界面的时候,如果按下返回键,则该程序会自动关闭并回到打开该程序的上一个界面。由于该动作是系统默认用来关闭程序的方法,所以并不需要你在代码中强行退出该程序。所以,微软并没有留下退出程序的函数供你调用。

    如果。。。嗯,我是说如果你非要在代码中关闭程序呢?也不是没办法。

    第一种办法,调用XNA中的退出方法,为了节约系统资源,XNA中提供了退出游戏的方法:

    添加对Microsoft.Xna.Framework.Game的引用; 调用Game.Exit()来退出程序。 但是请注意,不要使用该方法。因为该方法违反了微软的应用程序验证的规范,将会导致你的程序无法提交到Marketplace中去。

    第二种方法,抛出自定义的Quit异常来退出程序:(不过这种方法网上异议很多,不推荐。)

    在App.xaml.cs文件中的App类添加如下代码:

    1.private class QuitException : Exception { }
    2.public static void Quit()
    3.{
    4.    throw new QuitException();
    5.}

    在App类的Application_UnhandledException方法中添加代码,使得它看起来如下:

    2.private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
    3.{
    4.    if (e.ExceptionObject is QuitException)
    5.        return;
    6.
    7.    if (System.Diagnostics.Debugger.IsAttached)
    8.    {
    9.        // An unhandled exception has occurred; break into the debugger
    10.        System.Diagnostics.Debugger.Break();
    11.    }
    12.}

    然后确保App.xmal.cs的构造函数中具有设定了UnhandledException的处理:

    UnhandledException+="Application_UnhandledException"

    好了,最后只需要在你想要退出程序的地方调用”App.Quit()”方法就可以退出程序了。

    第三种方法:在你需要退出的页面加上此方法

    在YourPage.xaml.cs的OnNavigatedTo事件中加入代码:

    protected override void OnNavigatedTo(NavigationEventArgs e)
            {
    
                int count = NavigationService.BackStack.Count();
    
                if (count > 0)
                {
    
                    for (int i = 0; i < count; i++)
                    {
    
                        NavigationService.RemoveBackEntry();
    
                    }
    
                }
                base.OnNavigatedTo(e);
            }

    这样在这个页面一按后退键,程序就会正常退出了。注意,这个NavigationService.BackStack和RemoveBackEntry必须放在OnNavigatedTo事件里面才会显示。

    后知后觉 后来居上
  • 相关阅读:
    [javaSE] GUI(jar包双击运行)
    [javaSE] GUI(打开文件对话框)
    [javaSE] GUI(菜单)
    [javaSE] GUI(对话框Dialog)
    [javaSE] GUI(练习-列出指定目录内容)
    [javaEE] 控制浏览器缓存资源
    [javaEE] response实现图片下载
    [javaSE] GUI(鼠标事件)
    [javaSE] 网络编程(TCP-并发上传图片)
    [javaSE] IO流(装饰设计模式)
  • 原文地址:https://www.cnblogs.com/dieaz5/p/2602299.html
Copyright © 2020-2023  润新知