.NET 4.0和WindowsFormstHost的Window Focus问题

时间:2011-01-05 22:25:12

标签: wpf winforms wpf-controls

我遇到了一些我遇到麻烦的奇怪行为:

  1. 添加一个简单的Forms控件 文本框到WindowsFormsHost;
  2. 添加一个打开另一个按钮 WPF窗口(未设置所有者);
  3. 最大化原始WPF窗口 然后单击文本框以使其具有 焦点;
  4. 当你这样做然后尝试 激活其他WPF窗口 它被激活的任务栏 然后停用。
  5. 令人不安的是,如果我在.NET 3.5下编译它,它没有问题。

    有什么想法吗?

1 个答案:

答案 0 :(得分:1)

在派生窗口上实现它有点帮助 - 但不能完全解决问题:

protected override void OnDeactivated(EventArgs e)
{
  var host = System.Windows.Input.FocusManager.GetFocusedElement(this) as System.Windows.Forms.Integration.WindowsFormsHost;
  if (host !=null )
  {
    Focus();
  }

  base.OnDeactivated(e);
}

它在停用时将焦点设置到窗口 - 这不够早,因此激活会翻转,但是当你第二次alt-tab切换时。但是,不保留重点控制。我尝试调度焦点集 - 但没有好处。