WPF 和 WinForms WebBrowser 控件之间存在哪些功能差异?

Posted

技术标签:

【中文标题】WPF 和 WinForms WebBrowser 控件之间存在哪些功能差异?【英文标题】:What functional differences exist between WPF and WinForms WebBrowser control? 【发布时间】:2010-09-15 08:32:53 【问题描述】:

WPF WebBrowser 控件看起来很棒,但随着时间的推移积累的有关 WinForms WebBrowser 的知识非常丰富,并且很难忽视像 csExWB 这样的工作。很高兴知道 .NET 3.5 的 WPF WebBrowser 控件相对于 WinForms WebBrowser 控件存在哪些功能缺点或优点。特别是,是否可以在 WPF WebBrowser 之上构建类似 csExWB 的功能?

【问题讨论】:

【参考方案1】:

从对 wpf 组件的一整天的沮丧中,这就是我的发现。显然,winforms webbrowser 公开了更多的方法和属性。比如wpf webbrowser中没有IsWebBrowserContextMenuEnabledActiveXInstance等。

此外,每个属性的document 属性包含不同类型的对象。 Winform 包含一个System.Windows.Forms.htmlDocument 类型的文档,其中包含一些有趣的方法和属性,例如PointToClientGetElementFromPoint。 Wpf webbrowser 文档是一个Object 类型的文档,可以转换为mshtml.HtmlDocument,它只提供与标准html + javascript 文档相同的方法和属性。不是很令人兴奋。我不知道它是否可以转换为其他东西(很有用),因为没有关于它的真实文档。

我注意到 winforms webbrowser 的唯一缺点是组件内的按钮和滚动条与 wpf 原生控件的外观不同。

【讨论】:

【参考方案2】:

我必须承认我不知道它们之间的区别,但如果你遇到问题,你也许可以使用WindowsFormsHost 在 WPF 中托管 winform 版本,like so?最终,两者都是 shdocvw 的封装,因此“纯 WPF”之类的原则并不真正适用。

【讨论】:

以上是关于WPF 和 WinForms WebBrowser 控件之间存在哪些功能差异?的主要内容,如果未能解决你的问题,请参考以下文章

如何截获WebBrowser控件onbeforeunload事件

如何使用 WPF WebBrowser 覆盖网页上的 btnSubmit_onclick javascript 函数?

在 C# winforms 中的同一表单上从一个 webBrowser 导航到另一个 webBrowser

在 WebBrowser 控件 WinForms 中使用 Chrome 引擎

Winforms WebBrowser 控件 URL 参数

WebBrowser 样式未在 WinForms 中正确应用