当我按下后退按钮时,应用程序的背景仍然存在。有谁知道我能做些什么来防止这种情况发生?如果我使用 Application.Exit(),它可以工作。
在此先感谢您喜欢stackoverflow :)
当我按下后退按钮时,应用程序的背景仍然存在。有谁知道我能做些什么来防止这种情况发生?如果我使用 Application.Exit(),它可以工作。
在此先感谢您喜欢stackoverflow :)
后退按钮是 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.");
}
}
在 Windows Mobile 中,您通常不会结束进程。当您使用 [X] 按钮关闭应用程序时,或者当您转到主屏幕时,通常会保持应用程序运行。
Windows Mobile 上的应用程序不会占用太多内存,因为它不会从硬盘复制到内存中。它只是停留在同一个 RAM 位置,只是现在它处于“活动状态”。自然,您的应用程序应该表现良好,在它没有焦点时尽可能少地占用资源。
如果您不希望出现这种行为,您可以在表单失去焦点时退出应用程序( Application.Exit() )。您可以通过 LostFocus 事件轻松捕捉到这一点。
会不会是我设备上的“后退按钮”是印有红色手机的那个?
您可以使用本机函数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 以来就已存在。有关详细信息,请参见此处。
我不确定您所说的“后退按钮”究竟是什么意思,但 Windows Mobile 中所有应用程序的默认行为是应用程序上的“X”按钮,即标准 Windows 中的“关闭”按钮,实际上表现像“最小化”并将应用程序移至后台。
要真正“关闭”应用程序,您通常会进入 Windows Mobile 任务管理器并结束应用程序。