3

我正在尝试使用 Visual Studio 2012 Express for Desktop 在 WPF(媒体播放器)中组合一个小型应用程序,并希望使用空格键暂停。不幸的是,空格键以及回车键似乎具有默认行为,其中(就在它们执行我为它们编写的任何命令之前)它们重新执行或重新引发窗口中的最新事件(按钮点击、按键等)。

我已经尝试在每个组合中覆盖 OnKeydown、OnKeyUp、OnPreviewKeyDown 和 OnPreviewKeyUp,但是没有任何覆盖可以消除这种行为。我还发现在我编写的其他 WPF 应用程序中也是如此,甚至在我几个月前组装的 Windows 窗体应用程序中也是如此。这是 Visual Studio 构建的所有应用程序的默认方面吗?更重要的是,有没有办法摆脱它?

4

1 回答 1

3

如果您覆盖OnPreviewKeyDown,您可以添加您想要的逻辑,然后设置e.Handledtrue,这将防止事件冒泡并导致您看到的行为。

private void Window_PreviewKeyDown(object sender, KeyEventArgs e)
{
    if (e.Key == Key.Enter || e.Key == Key.Space)
    {
        //Your Logic
        e.Handled = true;
    }
}
于 2013-07-31T18:04:43.053 回答