我的WPF项目包含一个视图(UserControl),该视图包含一个包含自定义WinForm UserControl的WindowsFormHost。
当我导航到此视图时,我希望将键盘焦点直接放入WinForm中,但我必须单击它才能获得控件(这不是预期的行为)。
我已经调查了Snoop,它是我的Windows包含焦点,当我点击winForm获得焦点时。我尝试了很多不同的东西,但现在这个代码似乎工作,但只是第一次。如果我导航到菜单并返回游戏,代码仍会被触发,但焦点方法没有效果。
如何在不点击它的情况下获得对WinForm控件的关注(并且每次都不需要重新创建视图)?
private void GameControl_OnGameReady(object sender, EventArgs e)
{
if (!this.Dispatcher.HasShutdownStarted)
this.Dispatcher.Invoke(() =>
{
for (int i = 0; i < 5; ++i)
{
this.Host.Focus();
this.Host.TabInto(new TraversalRequest(FocusNavigationDirection.First));
this.Host.Child.Focus();
Console.WriteLine("TEST");
}
});
}
&#13;
OnGameReady是我在OpenGL和winform中的所有内容初始化时触发的自定义事件。 (这意味着我们可以画)