是不推荐使用AxShDocVw.AxWebBrowser?

时间:2012-02-22 07:09:41

标签: vb.net webbrowser-control

我在旧项目中遇到AxShDocVW.dll问题,所以为了重新创建问题,我创建了一个新的VB.Net表单项目并将WebBrowser控件放入其中。我注意到我的旧项目中的References包含ShDocVw但不包含AxShDocVw。此外,当我从旧项目中复制以下行时,它(自然地)无法识别它。

Dim WithEvents MyWebBrowserMain As New AxSHDocVw.AxWebBrowser

通过网络上的一堆页面阅读,我得到的结论是AxShDocVw.AxWebBrowser已被弃用。这是真的?如果是这样,还有什么选择呢?

另外,我能够做到:

Dim WithEvents MyWebBrowserMain As New SHDocVw.WebBrowser

但是这有例子,我不能再做MyWebBrowserMain.Location = New Point(...

我也发现:

Dim WithEvents MyWebBrowserMain As New System.Windows.Forms.WebBrowser

但这是正确的方法吗?我很困惑!!

感谢名单, 阿尼尔

1 个答案:

答案 0 :(得分:4)

没有正确的方法......取决于您打算如何处理类型库

AxSHDocVw:从aximp或Visual Studio的Windows窗体工具箱生成的COM代理包装器dll,使用旧的IE类型库(IE7从IEFramed.dll公开AxWebBrowser,而不是SHDocVw)。适用于Windows窗体应用程序。

SHDocVw:使用旧的IE类型库从tlbimp或“添加引用”对话框的COM选项卡生成的COM代理包装器DLL。

如果你使用Windows Forms,你应该使用System.Windows.Forms.WebBrowser如果你的目标框架是2.0或更高,除非扩展点的数量不满足你的需要,那么你需要直接托管ActiveX版本

如果您的Visual Studio安装正确,并且您添加了对IE类型库的新引用,则您的COM引用可能已更改为使用Microsoft的PIA microsoft.mshtml.dll。 Using this reference on IE6 machines is not recommended.