0

当我按下后退按钮时,应用程序的背景仍然存在。有谁知道我能做些什么来防止这种情况发生?如果我使用 Application.Exit(),它可以工作。

在此先感谢您喜欢stackoverflow :)

4

4 回答 4

2

后退按钮是 Windows Mobile Standard(智能手机)功能,通常不存在于 Windows Mobile Professional 或 Classic(掌上电脑)设备中。

在本机操作系统级别,下面的 MSDN 文章“ The Back Button and Other Interesting Buttons ”描述了默认行为以及如何覆盖或更改它。

在 .NET CF 环境中,请查看 MSDN 上提供的“如何:覆盖智能手机返回键”文章。例如,在表单类中,您应该能够执行以下操作。

// Connect an event handler to the KeyPress event
this.KeyPress += new KeyPressEventHandler(OnKeyPress);

private void OnKeyPress(object sender, KeyPressEventArgs ke)
{
    // Determine if ESC key value is pressed.
    if (ke.KeyChar == (Char)Keys.Escape)
    {
        // Handle the event to provide functionality.
        ke.Handled = true;

        // Add your event handling code here.
        MessageBox.Show("Back key was pressed.");
    }
}
于 2009-10-21T21:42:09.737 回答
0

在 Windows Mobile 中,您通常不会结束进程。当您使用 [X] 按钮关闭应用程序时,或者当您转到主屏幕时,通常会保持应用程序运行。

Windows Mobile 上的应用程序不会占用太多内存,因为它不会从硬盘复制到内存中。它只是停留在同一个 RAM 位置,只是现在它处于“活动状态”。自然,您的应用程序应该表现良好,在它没有焦点时尽可能少地占用资源。

如果您不希望出现这种行为,您可以在表单失去焦点时退出应用程序( Application.Exit() )。您可以通过 LostFocus 事件轻松捕捉到这一点。

会不会是我设备上的“后退按钮”是印有红色手机的那个?

于 2009-10-21T21:55:47.093 回答
0

您可以使用本机函数AllKeys并将其设置Form.KeyPreview为 true 以在用户按下硬件键时接收 KeyDown 事件。在表单中添加一个 KeyDown 事件处理程序,在 KeyDown 处理程序中放置一个断点,然后按“返回”按钮并检查KeyEventArgs.KeyCode. 您可以设置KeyEventArgs.Handled为 true 以防止硬件按键被 Windows Mobile 处理。

这是 PInvoke 信息:

[DllImport("coredll.dll", SetLastError = true)]
static extern bool AllKeys(bool bAllKeys);

调用 AllKeys(true) 以接收硬件键的 KeyDown 事件。调用 AllKeys(false) 以停止接收硬件键的 KeyDown 事件。此功能没有官方文档,但它自 Pocket PC 2003 以来就已存在。有关详细信息,请参见此处

于 2009-10-09T15:53:36.353 回答
0

我不确定您所说的“后退按钮”究竟是什么意思,但 Windows Mobile 中所有应用程序的默认行为是应用程序上的“X”按钮,即标准 Windows 中的“关闭”按钮,实际上表现像“最小化”并将应用程序移至后台。

要真正“关闭”应用程序,您通常会进入 Windows Mobile 任务管理器并结束应用程序。

于 2009-10-08T20:25:29.530 回答