.net 在Microsoft WebBrowser/Windows窗体web浏览器上显示文件

.net 在Microsoft WebBrowser/Windows窗体web浏览器上显示文件,.net,vb.net,winforms,webbrowser-control,.net,Vb.net,Winforms,Webbrowser Control,我在窗体应用程序中使用了windows窗体web浏览器控件,并且在显示.doc或.docx文件时出现问题 所有的pdf文件似乎都可以正常工作,但当我选择word文件时,会出现文件下载对话框,其中包含打开、保存和取消选项 我在这里使用的代码是 Try If (dlgOpen.ShowDialog() = DialogResult.OK) Then If (File.Exists(dlgOpen.FileName)) Then

我在窗体应用程序中使用了
windows窗体web浏览器
控件,并且在显示
.doc
.docx
文件时出现问题

所有的pdf文件似乎都可以正常工作,但当我选择word文件时,会出现文件下载对话框,其中包含打开、保存和取消选项

我在这里使用的代码是

  Try
        If (dlgOpen.ShowDialog() = DialogResult.OK) Then
            If (File.Exists(dlgOpen.FileName)) Then
                 wbPreview.Navigate(dlgOpen.FileName)
            End If
        End If
  Catch ex As Exception
        MsgBox(ex.Message, MsgBoxStyle.Critical)
  End Try
然后,我尝试使用
MicrosoftWebBrowser
控件,如中所述,最终出现了相同的问题。
有没有解决这个问题的IDE?

主要的问题是web浏览器不知道如何打开docx文件,所以它提供了一个下载文件。对于该文件类型。

有一个解决方案,但我不确定它有多实用。它会修改用户注册表(尽管它不需要管理员权限):

  • 确定Microsoft Word的最新ProgID
    HKEY\U CLASSES\u ROOT\Word.Document\CurVer
    。例如,它包含
    Word.Document.12
  • HKEY\u CURRENT\u USER\Software\Classes\Word.Document.12下添加/更新以下键和值:
REGEDIT4 [HKEY\U CURRENT\U USER\Software\Classes\Word.Document.12] @=“Microsoft Word文档” “BrowserFlags”=dword:80000024 “EditFlags”=dword:00010000 [HKEY\U CURRENT\U USER\Software\Classes\Word.Document.12\CLSID] @=“{F4754C9B-64F5-4B40-8AF4-679732AC0607}”
  • 现在
    WebBrowser
    将加载.DOC和.DOCX文件。这是一个几乎没有文档记录的黑客行为

  • 您应该保存所有现有注册表值,并在
    WebBrowser.Navigating
    时将新注册表值放入,然后在
    WebBrowser.Navigated
    时恢复原始注册表值。这一想法已通过Office 2010和IE10得到验证


在microsoft支持上找到了此解决方法

对于需要在Web浏览器窗口内打开Office文件的应用程序,请使用以下解决方法。但是,在Windows Vista以后的操作系统中可能不存在此Internet Explorer功能


全文可在此处找到

我不想在默认查看器中打开它!只需在
web浏览器中显示
control我认为您所指的消息与IE的安全设置有关(因此只能间接地与Word有关),这不能从WebBrowser类中更改。IE设置如何影响此过程?IE管理MS产品中与internet连接相关的任何问题。网络浏览器遵循IE规则。
REGEDIT4

[HKEY_CURRENT_USER\Software\Classes\Word.Document.12]
@="Microsoft Word Document"
"BrowserFlags"=dword:80000024
"EditFlags"=dword:00010000

[HKEY_CURRENT_USER\Software\Classes\Word.Document.12\CLSID]
@="{F4754C9B-64F5-4B40-8AF4-679732AC0607}"