C# 在WebBrowser获得焦点后返回键盘事件

C# 在WebBrowser获得焦点后返回键盘事件,c#,wpf,xaml,webbrowser-control,C#,Wpf,Xaml,Webbrowser Control,我有一种情况,我想使用WFPWebBrowser,但当用户按下按钮时,发生了一些事情;然而,在WebBrowser获得焦点后,一些键盘和鼠标事件不再在我的应用程序中触发 要复制:创建新项目,请设置XAML: 并让codebehide覆盖OnKeyDown()事件 public partial class MainWindow { public MainWindow() { InitializeComponent(); browser.Navig

我有一种情况,我想使用WFP
WebBrowser
,但当用户按下按钮时,发生了一些事情;然而,在
WebBrowser
获得焦点后,一些键盘和鼠标事件不再在我的应用程序中触发

要复制:创建新项目,请设置XAML:


并让codebehide覆盖
OnKeyDown()
事件

public partial class MainWindow
{
    public MainWindow()
    {
        InitializeComponent();
        browser.Navigate("http://www.google.com");
        //The above line causes browser to focus 
        //and as a consequence the OnKeyDown() handler 
        //doesn't get called again
    }

    protected override void OnKeyDown(KeyEventArgs e)
    {
        if (e.Key == Key.Enter) MessageBox.Show("Yey!");
        base.OnKeyDown(e);
    }
}
好的,可以理解用户可能想要键入他的谷歌查询。但在某个时刻,我想重新获得控制权。为此,我设计了一个按钮。当你点击这个按钮,我希望键盘控制回到WPF应用程序。但无论按钮做什么,我都无法再次启动
OnKeyDown()

我的特殊限制允许在此时销毁
WebBrowser
。我尝试清除其父容器,尝试调用
Dispose()
和垃圾收集器。尝试了
Focus()。似乎没有什么东西能恢复控制

我宁愿避免创建新的
Window()
或类似的解决方案

编辑

我发现放一个
文本框
并使其成为焦点可以让我重新聚焦!然而,我的窗口中并没有文本框,添加一个只用于咯咯笑的文本框充其量是违反直觉的

编辑2


当前的临时解决方案放置了一个不可见的(嗯,有点像,它只是0乘0,
可见性。隐藏的
不起作用)
文本框
-启用、聚焦和禁用它。如果不首先禁用它,一些键将由
TextBox
处理,而不是冒泡到
KeyDown()

    protected override void OnKeyUp(KeyEventArgs e)
    {
        if (e.Key == Key.Enter) MessageBox.Show("Hi");
        base.OnKeyUp(e);
    }

是的,它仅可用于
Enter
键,修复方法是将OnKeyUp()用于
Enter

    protected override void OnKeyUp(KeyEventArgs e)
    {
        if (e.Key == Key.Enter) MessageBox.Show("Hi");
        base.OnKeyUp(e);
    }