如何:重写 Smartphone 后退键
更新:2007 年 11 月
说明: |
---|
请注意,要在 Smartphone 应用程序之间导航,后退键功能十分重要。大多数情况下,更改后退键的默认导航行为有悖于 Smartphone 用户界面准则。决定重写此功能时要谨慎。 |
您可以在 Smartphone 应用程序中自定义后退键(例如,为游戏自定义)。该键根据按键操作的上下文执行操作,如下表中所述。
后退键操作 |
上下文 |
---|---|
取消模式对话框。 |
始终。 |
取消快捷菜单。 |
始终。 |
执行 Backspace 键操作。 |
当焦点在可编辑控件(如文本框)上或在可编辑的自定义控件上时。 |
按 z 顺序导航到下一个窗口。 请注意,当焦点在窗体或自定义控件上时,后退键会引发 KeyPress 事件,您可以处理该事件以提供自己的功能,如示例中所演示。 如果您不处理该事件,则焦点会按 z 顺序导航到下一个窗口。 |
当焦点在窗体、不可编辑的控件(如单选按钮)或不可编辑的自定义控件上时。 |
无论是否有菜单栏,后退键的操作方式都相同。如果窗体包含 MainMenu 组件,则存在菜单栏。
示例
下面的代码示例演示如何执行自定义的后退键功能。当后退键在某个窗体或自定义控件上被按下时,它会引发 KeyPress 事件,而此时的 KeyChar 值会与 Esc 键的值相等 (27)。在事件处理代码中,确定是否引发了 Esc 键值。如果引发了该值,请通过将 Handled 属性设置为 true 来取消默认的后退键操作。如果未处理事件参数,则后退键会按 z 顺序导航到下一个窗口。
Visual C# 用户需要在窗体的构造函数中为 KeyPress 事件定义一个事件处理程序。
// Connect an event handler to the KeyPress event
this.KeyPress += new KeyPressEventHandler(OnKeyPress);
Private Sub keypressed(ByVal o As [Object], _
ByVal e As KeyPressEventArgs) Handles MyBase.KeyPress
' Determine if ESC key value is raised.
If e.KeyChar = ChrW(Keys.Escape) Then
' Handle the event to provide your own functionality.
e.Handled = True
' Add your event handling code here.
MessageBox.Show("Custom back key functionality.")
End If
End Sub
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.");
}
}
编译代码
此示例需要引用下面的命名空间: