相关疑难解决方法(0)

奇怪的 KeyUp 行为(主窗体处理来自子进程的事件?!)

问题:

  1. KeyUp 由主窗口中的网格处理 ( Grid_KeyUp)
  2. 主窗口显示子窗口(例如MessageBox.Show(...)
  3. 用户按 [Return] ( Keys.Return) 关闭MessageBox
  4. 主窗口实际上从 MessageBox 中的按键获取 KeyUp 事件

我有一个非常简单的孤立样本,它显示了我遇到的问题。只需创建一个空的 WPF 项目并使用此 XAML:

<Grid KeyUp="Grid_KeyUp">
    <Button Click="Button_Click"></Button>
</Grid>
Run Code Online (Sandbox Code Playgroud)

以及隐藏的代码:

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }

    private void Grid_KeyUp(object sender, KeyEventArgs e)
    {
        Console.WriteLine("KEYUP: " + e.Key);
    }

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        MessageBox.Show(this, "TEST");
    }
}
Run Code Online (Sandbox Code Playgroud)

如果单击该按钮并按 [Return] 关闭 MessageBox,输出窗口将打印:

KEYUP: Return
Run Code Online (Sandbox Code Playgroud)

奇怪的事实:

  1. 当按 [Escape](打印)时,我会得到相同的行为KEYUP: Escape,但是当我按 [Space] 时,控制台不会打印任何内容! …

wpf routedevent keyup

5
推荐指数
1
解决办法
1083
查看次数

标签 统计

keyup ×1

routedevent ×1

wpf ×1