如何:重写 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.");
    }
}

编译代码

此示例需要引用下面的命名空间:

请参见

任务

如何:重写 Smartphone 功能键

其他资源

Smartphone 开发和 .NET Compact Framework