none
按Back按钮推出程序那个退出提示怎么实现。 RRS feed

  • 问题

  • 比如这样的提示,我是写在Application_Closing这个事件中。肯定是不行的。它都退出了。到了菜单也页面才出现这个提示

    2012年8月6日 10:10

答案

  • Hi,

    可以写在按Back按钮的事件里

            protected override void OnBackKeyPress(System.ComponentModel.CancelEventArgs e)
            {
            } 

    • 已标记为答案 郭彬 2012年8月8日 4:26
    2012年8月7日 7:47
  • Hi,

    可以写在按Back按钮的事件里

    protected override void OnBackKeyPress(System.ComponentModel.CancelEventArgs e) {

    if(e.Cancel == true)

    //做你想做的 }




    Stephen Chen

    • 已标记为答案 郭彬 2012年8月8日 4:25
    2012年8月7日 8:07
  • 创建一个类

    需要引用 using Microsoft.Xna.Framework.GamerServices;

    public class Query
        {
            private static int _shouldExit = -1;
            public static MessageBoxResult Show(string title, string content)
            {
                //开始显示系统中任意用户可以可以响应的消息框
                Guide.BeginShowMessageBox(title, content, new string[] { "确定", "取消" }, 0, MessageBoxIcon.Alert, asyncResult =>
                {
                    //终止消息框的显示
                    int? returned = Guide.EndShowMessageBox(asyncResult);
                    if (returned == 0)
                    {
                        _shouldExit = 1;
                    }
                    else
                    {
                        _shouldExit = 0;
                    }
                }, null);
                while (true)
                {
                    if (_shouldExit == 1)
                    {
                        return MessageBoxResult.OK;
                        break;
                    }
                    else if (_shouldExit == 0)
                    {
                        _shouldExit = -1;
                        return MessageBoxResult.Cancel;
                        break;
                    }
                    //创建线程,将当前线程挂起指定的时间
                    System.Threading.Thread.Sleep(1);
                }
                    
            }
        }

    如果在MainPage.xaml.cs页面这样调用。

            protected override void OnBackKeyPress(System.ComponentModel.CancelEventArgs e)
            {
                //如果历史记录中没有一个存在
                if (NavigationService.CanGoBack==false)
                {
                    if (Query.Show("提示","确定要退出吗?")==MessageBoxResult.Cancel)
                    {
                        e.Cancel = true;
                    }
                }
            }


    • 已编辑 郭彬 2012年8月8日 6:50
    • 已标记为答案 Otomii Lu 2012年8月8日 7:22
    2012年8月8日 6:50

全部回复

  • Hi,

    可以写在按Back按钮的事件里

            protected override void OnBackKeyPress(System.ComponentModel.CancelEventArgs e)
            {
            } 

    • 已标记为答案 郭彬 2012年8月8日 4:26
    2012年8月7日 7:47
  • Hi,

    可以写在按Back按钮的事件里

    protected override void OnBackKeyPress(System.ComponentModel.CancelEventArgs e) {

    if(e.Cancel == true)

    //做你想做的 }




    Stephen Chen

    • 已标记为答案 郭彬 2012年8月8日 4:25
    2012年8月7日 8:07
  • 创建一个类

    需要引用 using Microsoft.Xna.Framework.GamerServices;

    public class Query
        {
            private static int _shouldExit = -1;
            public static MessageBoxResult Show(string title, string content)
            {
                //开始显示系统中任意用户可以可以响应的消息框
                Guide.BeginShowMessageBox(title, content, new string[] { "确定", "取消" }, 0, MessageBoxIcon.Alert, asyncResult =>
                {
                    //终止消息框的显示
                    int? returned = Guide.EndShowMessageBox(asyncResult);
                    if (returned == 0)
                    {
                        _shouldExit = 1;
                    }
                    else
                    {
                        _shouldExit = 0;
                    }
                }, null);
                while (true)
                {
                    if (_shouldExit == 1)
                    {
                        return MessageBoxResult.OK;
                        break;
                    }
                    else if (_shouldExit == 0)
                    {
                        _shouldExit = -1;
                        return MessageBoxResult.Cancel;
                        break;
                    }
                    //创建线程,将当前线程挂起指定的时间
                    System.Threading.Thread.Sleep(1);
                }
                    
            }
        }

    如果在MainPage.xaml.cs页面这样调用。

            protected override void OnBackKeyPress(System.ComponentModel.CancelEventArgs e)
            {
                //如果历史记录中没有一个存在
                if (NavigationService.CanGoBack==false)
                {
                    if (Query.Show("提示","确定要退出吗?")==MessageBoxResult.Cancel)
                    {
                        e.Cancel = true;
                    }
                }
            }


    • 已编辑 郭彬 2012年8月8日 6:50
    • 已标记为答案 Otomii Lu 2012年8月8日 7:22
    2012年8月8日 6:50