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

4
我已经成功创建了一个示例项目,使用HwndHost来托管Notepad(并非我真正的项目将要嵌入的内容)在C# WPF选项卡控件中。对此,我要感谢那些回答在WPF窗口中托管外部应用程序的人们(顺便说一句,不需要DwayneNeed)。
这个示例工作得很好,直到你点击托管的Notepad实例,然后尝试切换选项卡。如果您没有导航到新页面中的任何内容,则必须先单击当前页面选择器,然后才能接受其他选项卡的单击。如果在其他页面上有内容(任何内容...只是一个按钮),则必须两次单击新选项卡选择器才能使其导航。 我尝试过但没用的事情:
  • 使用AttachThreadInput()加入两个应用程序窗口的输入线程。
  • 在Tab Control鼠标按下事件上调用this.InvalidateVisual();
什么起作用:
  • 当按下按钮时,以编程方式更改TabControl.SelectedIndex值。
为了解决这个问题,我认为我只需要在Tab选择器的位置使用按钮(使它们不可见),并通过编程方式更改页面即可。这不是什么大问题,但我想知道是否有其他人遇到过这个问题,并可能对此有一个解释!

p.s. 我对WPF和C#有点陌生。


我知道一个人可以回答这个问题。 - Michael Brown
你是否正在使用你链接的另一个SO主题中描述的SetParent()方法? - Jeremiah Morrill
是的,我正在使用SetParent()方法。 - Youngy
1个回答

0

你的托管记事本应用程序是另一个窗口,所以如果焦点在记事本中 - 首先单击选项卡选择器激活你的WPF窗口并使其获得焦点,然后第二次单击执行你想要做的操作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接