当我按下后退按钮时,应用程序的背景仍然存在。有谁知道我能做什么,以防止这种情况? 如果我使用Application.Exit(),它可以工作。
提前谢谢 喜欢stackoverflow:)答案 0 :(得分:2)
后退按钮是Windows Mobile Standard(智能手机)功能,通常在Windows Mobile Professional或Classic(掌上电脑)设备中不存在。
在本机操作系统级别,以下MSDN文章“The Back Button and Other Interesting Buttons”描述了默认行为以及如何覆盖或更改它。
在.NET CF环境中,请查看MSDN上提供的“How to: Override the Smartphone Back Key”文章。例如,在表单类中,您应该能够执行以下操作。
// 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.");
}
}
答案 1 :(得分:0)
我不确定你的'后退按钮'究竟是什么意思,但是所有应用程序在windows mobile中的默认行为是应用程序上的“X”按钮,它将成为标准Windows中的“关闭”按钮,实际上表现得像“最小化”并将应用程序移动到后台。
要真正“关闭”应用程序,您通常会进入Windows Mobile任务管理器并结束应用程序。
答案 2 :(得分: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以来就已存在。有关详细信息,请参阅here。
答案 3 :(得分:0)
在Windows Mobile中,通常不会结束进程。当您使用[X]按钮关闭应用程序时,或者当您转到主屏幕时,通常会让应用程序继续运行。
Windows Mobile上的应用程序不会占用更多内存,因为它不会从硬盘复制到ram中。它只是保持在相同的RAM位置,只是现在它是“活动的”。当然,你的应用程序应该表现良好,当它没有焦点时,尽可能减少资源。
如果您不想要此行为,则可以在表单失去焦点时退出应用程序(Application.Exit())。您可以使用LostFocus事件轻松捕捉到这一点。
可能是我的设备上的“后退按钮”是打印了红色手机的那个吗?