C# WPF和Windows窗体互操作

C# WPF和Windows窗体互操作,c#,wpf,winforms,C#,Wpf,Winforms,WPF和Windows窗体互操作 说明: 在WPF用户界面中,可以更改元素的z顺序以控制重叠行为。托管的Windows窗体控件在单独的HWND中绘制,因此它始终绘制在WPF元素的顶部 *但是我想知道没有私人的方法来解决它吗?不,这就是众所周知的空域问题(因为WinForms元素占据了全部) 本来应该有一个关于.NET4.5/4.6的补丁,但它从未投入生产(如果你用谷歌搜索的话,还有其他的)。到目前为止,还没有消息称微软计划解决这个问题 这篇文章可能有助于解决这一问题:不,这就是所谓的空域问题(因

WPF和Windows窗体互操作

说明:

在WPF用户界面中,可以更改元素的z顺序以控制重叠行为。托管的Windows窗体控件在单独的HWND中绘制,因此它始终绘制在WPF元素的顶部


*但是我想知道没有私人的方法来解决它吗?

不,这就是众所周知的空域问题(因为WinForms元素占据了全部)

本来应该有一个关于.NET4.5/4.6的补丁,但它从未投入生产(如果你用谷歌搜索的话,还有其他的)。到目前为止,还没有消息称微软计划解决这个问题


这篇文章可能有助于解决这一问题:

不,这就是所谓的空域问题(因为WinForms元素占据了全部)

本来应该有一个关于.NET4.5/4.6的补丁,但它从未投入生产(如果你用谷歌搜索的话,还有其他的)。到目前为止,还没有消息称微软计划解决这个问题


本文可能有助于解决此问题:

我的第一个建议是用等效的WPF控件替换Windows窗体控件

第二个建议是接受该限制,并且不要将任何WPF控件与Windows窗体控件重叠

在某些情况下,您可能可以使用多个顶级窗口来解决此限制。然后,您必须编写一些代码来正确同步Windows的位置或表面激活状态


我从来没有在Windows窗体和WPF之间这样做过,但我在Windows窗体中做过两个顶级窗口,这样部分UI可以是半透明的(目的是能够重叠另一个应用程序(可能是PDF查看器),以便我们可以从现有图表中“复制”曲线).

我的第一个建议是用等效的WPF控件替换Windows窗体控件

第二个建议是接受该限制,并且不要将任何WPF控件与Windows窗体控件重叠

在某些情况下,您可能可以使用多个顶级窗口来解决此限制。然后,您必须编写一些代码来正确同步Windows的位置或表面激活状态


我从来没有在Windows窗体和WPF之间这样做过,但我在Windows窗体中做过两个顶级窗口,这样部分UI可以是半透明的(目的是能够重叠另一个应用程序(可能是PDF查看器),以便我们可以从现有图表中“复制”曲线).

您能告诉我为什么需要通过WPF托管Windows窗体吗?是否有任何特定原因迫使您使用windows窗体宿主移动?与问题无关,只是好奇地想知道。好吧,它可能与。。。因为最好的解决方案并不总是按照我们的想法去做。你能告诉我为什么你需要在WPF上托管Windows窗体吗?是否有任何特定原因迫使您使用windows窗体宿主移动?与问题无关,只是好奇地想知道。好吧,它可能与。。。因为最好的解决办法并不总是按照我们的想法去做。