wpf - .NET 4.0 和 WindowsFormstHost 的窗口焦点问题

标签 wpf winforms wpf-controls

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

  • 添加一个简单的表单控件
    文本框到 WindowsFormsHost;
  • 添加一个按钮打开另一个
    WPF 窗口(不设置所有者);
  • 最大化原始 WPF 窗口
    并单击文本框,使其具有
    重点;
  • 当你这样做,然后尝试
    激活另一个 WPF 窗口
    它被激活的任务栏和
    然后停用。

  • 令人不安的是,如果我在 .NET 3.5 下编译它,它就没有问题。

    有任何想法吗?

    最佳答案

    在派生窗口上实现这一点会有所帮助 - 但并不能完全解决问题:

    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 时它会切换。但是没有保留集中控制。我尝试调度焦点集 - 但没有好处。

    关于wpf - .NET 4.0 和 WindowsFormstHost 的窗口焦点问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4609836/

    相关文章:

    c# - WPF : Remove control's explicit foreground color

    c# - 为什么 WPF ComboBox 项目没有更新?

    c# - WebView2 网站未加载

    c# - 应用程序中对 webservice 方法的多个异步调用失败并出现异常

    c# - iOS/MonoTouch 等同于 Windows 窗体显示/隐藏对话框?

    wpf - 列表框项目中的多个控件

    c# - WPF 中的 ItemsControl/DataTemplate 内部没有样式继承?

    c# - 如何在代码后面获取ContentPresenter?

    c# - 'xx' 由于其保护级别而无法访问

    WPF MVVM 依赖属性