在WPF TabControl中托管外部应用程序

时间:2012-12-04 07:15:34

标签: c# wpf hwndhost

我设法创建了一个示例项目,该项目使用HwndHost在C#WPF选项卡控件中托管记事本(不是我的真实项目将嵌入)。为此,非常感谢那些回复Hosting external app in WPF window的人( BTW,不需要DwayneNeed

此示例效果很好,直到您单击记事本的托管实例,然后然后尝试更改标签。如果您导航到的新页面中没有任何内容,则必须先单击当前页面选择器,然后才能接受其他选项卡上的单击。如果您在其他页面上有内容(任何内容......只是一个按钮),那么您将被迫单击新选项卡选择器TWICE以使其离开。

我尝试过的东西不起作用:

  • 使用AttachThreadInput()加入两个应用程序窗口的输入线程。
  • 在Tab Control鼠标按下事件上调用this.InvalidateVisual();

诀窍是什么:

  • 按下按钮时,以编程方式将TabControl.SelectedIndex值更改为我想要的值。

为了解决这个问题,我想我只需要在Tab选择器的位置使用按钮(使它们不可见),然后以编程方式更改页面。这不是什么大问题,但我想知道是否有其他人遇到过这个问题,并且可能有解释!

P.S。我是WPF和C#的新手。

1 个答案:

答案 0 :(得分:0)

您托管的记事本应用程序是另一个窗口,因此如果焦点位于记事本中 - 首先单击选项卡选择器会激活您的WPF窗口并使其聚焦,而不是第二次选择您想要做的事情。