Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 在WPF中托管ActiveX控件:WindowsFormsHost还是ActiveXHost?_.net_Wpf_Winforms_Wpf Controls_Activex - Fatal编程技术网

.net 在WPF中托管ActiveX控件:WindowsFormsHost还是ActiveXHost?

.net 在WPF中托管ActiveX控件:WindowsFormsHost还是ActiveXHost?,.net,wpf,winforms,wpf-controls,activex,.net,Wpf,Winforms,Wpf Controls,Activex,我知道MSDN用于在WPF应用程序中托管ActiveX控件。但也有,作为WebBrowser控制的基础。它被描述为一个基础设施类,但它是公共的,我可以从中派生出来。它似乎提供了托管自定义ActiveX控件所需的一切。为什么有另一层?这是个坏主意吗?您不应该使用它的最大原因是,作为一个基础结构类,它们无法确保api在不同版本之间保持稳定。他们可以从根本上改变它的使用方式,即使是在对框架进行小规模更新的情况下。现在,他们可能不会,但是因为你不能保证它是稳定的,如果.NET的新版本破坏了api,你的应

我知道MSDN用于在WPF应用程序中托管ActiveX控件。但也有,作为WebBrowser控制的基础。它被描述为一个基础设施类,但它是公共的,我可以从中派生出来。它似乎提供了托管自定义ActiveX控件所需的一切。为什么有另一层?这是个坏主意吗?

您不应该使用它的最大原因是,作为一个基础结构类,它们无法确保api在不同版本之间保持稳定。他们可以从根本上改变它的使用方式,即使是在对框架进行小规模更新的情况下。现在,他们可能不会,但是因为你不能保证它是稳定的,如果.NET的新版本破坏了api,你的应用程序可能会突然在用户的机器上随机中断


我不相信这种情况会发生,但这是危险的。

如果您正在构建一个WPF应用程序,我认为是这样,那么您应该使用
WindowsFormsHost
控件来承载ActiveX内容。
WebBrowser
继承自
ActiveXHost
,允许您在XAML应用程序中承载ActiveX内容,这些应用程序在web浏览器中运行,会引发某些信任和安全问题

如果查看继承树,您会发现这两个主机都派生自
HwndHost
,但
WindowsFormsHost
是供开发人员使用的


不管怎样,正如@Abe所说,没有什么真正危险的事情会发生,但如果微软公司的人说不这样做,那就不要这样做

谢谢你的想法。只是不清楚他们为什么把它公之于众。它的唯一后代是来自同一组件的WebBrowser。他们密封了WebBrowser类,他们可以将ActiveXHost标记为内部,但他们没有。是的,我知道,这看起来确实有点奇怪。也许负责该类的开发人员不想为它编写文档,所以决定它“仅供内部使用”哈哈。你是说
WebBrowser
而不是
BrowserControl
?我就是找不到
浏览器控件
。非常感谢。