Как использовать элемент управления WebBrowser для открытия документов Office в Visual C# 2005 или Visual C#.NET

Переводы статьи Переводы статьи
Код статьи: 304662 - Vizualiza?i produsele pentru care se aplic? acest articol.
Для Microsoft Visual Basic.NET версии данной статьи, см. 304643.
Развернуть все | Свернуть все

В этой статье

Аннотация

Можно отображать или внедрить в документ Microsoft Office непосредственно в форме Microsoft Visual C#. Microsoft Visual C# 2005 и Microsoft Visual C#.NET предоставляет элемент управления OLE, которая позволяет внедрить документ Office в форме. Необходимо внедрить документ и откройте его как объект документа ActiveX на месте в форме Visual C#, возможных решений можно ли с помощью элемента управления Microsoft WebBrowser.

В этой статье показано, как перейти к существующему документу Office и способ ее отображения в форме Visual C# с помощью элемента управления WebBrowser.

Дополнительная информация

Документы ActiveX-это внедряемые объекты OLE, которые ведут себя подобно ActiveX, чем обыкновенных объектов OLE. В отличие от традиционных внедренного объекта документ ActiveX не предназначен для содержащихся в нем объектов в более большой документ. Вместо этого он считается само по себе полный документ, просматриваемый (например с Microsoft Internet Explorer) или записываются в один ресурс с другими документами (такой как файл подшивки Microsoft Office). Документ ActiveX, который размещается в элементе управления WebBrowser всегда активно. Таким образом в отличие от традиционных внедренные объекты OLE, бессмысленно активации на месте.

Хотя Visual C# 2005 и Visual C#.NET не поддерживает документы размещения ActiveX напрямую, элемент управления WebBrowser можно использовать для этой цели. Элемент управления WebBrowser (Shdocvw.dll) входит в состав Internet Explorer и может использоваться только в системах с установленным Internet Explorer.

Создание приложения Visual C#, открытие документов Office

Для создания приложения Visual C#, открывающего документы Office, выполните следующие действия.
  1. Создание нового проекта приложения Windows в Visual C# 2005 или Visual C#.NET. По умолчанию создается форма Form1.

    Примечание В Visual C# 2005 Если не удается найти файл AxSHDocVw.dll или файл SHDocVw.dll, выполните следующую команду в командной строке Visual Studio:
    aximp %WINDIR%\system32\shdocvw.dll
    Создайте прокси среды CLR (SHDocVw.dll) и Windows Forms прокси (AxSHDocVw.dll) для управления веб-обозревателя Microsoft. Чтобы добавить файлы DLL в Visual C# 2005, выполните следующие действия.
    1. На Проект меню, нажмите кнопку Добавить ссылку.
    2. В Добавить ссылку диалоговое окно, нажмите кнопку Обзор.
    3. Найдите и выберите файл AxSHDocVw.dll и файла SHDocVw.dll.
    4. Чтобы добавить ссылки на проект для этих двух файлов, нажмите кнопку ОК.
  2. На Сервис меню, нажмите кнопку Настройка панели элементов Чтобы открыть Настройка панели элементов диалоговое окно. На Компоненты COM Вкладка, добавить ссылку Корпорация Майкрософт WebBrowser. Нажмите кнопку ОК Чтобы добавить элемент управления WebBrowser Windows Forms области элементов. Элемент управления WebBrowser появляется с текстом Проводник на панели инструментов.

    Примечание В Visual Studio 2005 шаг 2 не требуется.
  3. Элемент управления WebBrowser, элемент управления OpenFileDialog и элемент управления CommandButton с помощью панели элементов, добавьте в форму Form1. Для добавления AxWebBrowser1, OpenFileDialog1, и Button1 переменные-члены для Форма Form1 класс. В Visual C# 2005 webBrowser1, openFileDialog1, и Button1 переменные-члены добавляются.
  4. В форме Form1 дважды щелкните значок Button1. Для добавления Button1_Click События Form1.
  5. В окне кода Form1 добавьте следующие пространства имен в список:
    using System.Reflection;
    					
  6. Определение закрытого члена в классе Форма Form1 как показано ниже:
    private Object oDocument; 
  7. В конце Метод InitializeComponent метод класса Форма Form1, добавьте следующий код для обработки Form1_Load, Form1_Closed, и axWebBrowser1_NavigateComplete2 события:
    this.axWebBrowser1.NavigateComplete2 += new AxSHDocVw.DWebBrowserEvents2_NavigateComplete2EventHandler(this.axWebBrowser1_NavigateComplete2);
    this.Load += new System.EventHandler(this.Form1_Load);
    this.Closed += new System.EventHandler(this.Form1_Closed);
    					
  8. Замените следующий код
    private void button1_Click(object sender, System.EventArgs e)
    {
    }
    					
    с помощью:
    private void button1_Click(object sender, System.EventArgs e)
    {
    
     String  strFileName;
    
     //Find the Office document.
     openFileDialog1.FileName = "";
     openFileDialog1.ShowDialog();
     strFileName = openFileDialog1.FileName;
    	        
     //If the user does not cancel, open the document.
     if(strFileName.Length != 0)
     {
      Object refmissing = System.Reflection.Missing.Value;
      oDocument = null;
      axWebBrowser1.Navigate(strFileName, ref refmissing , ref refmissing , ref refmissing , ref refmissing);
     }
    }
    
    public void Form1_Load(object sender, System.EventArgs e)
    {
     button1.Text = "Browse";
     openFileDialog1.Filter = "Office Documents(*.doc, *.xls, *.ppt)|*.doc;*.xls;*.ppt" ;
     openFileDialog1.FilterIndex = 1;
    }
    
    public void Form1_Closed(object sender, System.EventArgs e)
    {
     oDocument = null;
    }
    
    public void axWebBrowser1_NavigateComplete2(object sender, AxSHDocVw.DWebBrowserEvents2_NavigateComplete2Event e)
    {
    
     //Note: You can use the reference to the document object to 
     //      automate the document server.
    
     Object o = e.pDisp;
       
     oDocument = o.GetType().InvokeMember("Document",BindingFlags.GetProperty,null,o,null);
    			
     Object oApplication = o.GetType().InvokeMember("Application",BindingFlags.GetProperty,null,oDocument,null);
    
     Object oName = o.GetType().InvokeMember("Name",BindingFlags.GetProperty ,null,oApplication,null);
    
     MessageBox.Show("File opened by: " + oName.ToString() ); 
    }
    					
    ПримечаниеНеобходимо изменить код в Visual Studio 2005. По умолчанию Visual C# добавляет одну форму проекта при создании проекта Windows Forms. Форма называется Form1. Два файла, которые представляют собой формы с именем Form1.cs и именем Form1.designer.cs. Напишите код в файле Form1.cs. Файл именем Form1.designer.cs, где в конструкторе Windows Forms записывает код, реализующий все действия, выполненные путем перетаскивания элементов управления с панели элементов.

    Дополнительные сведения о конструкторе Windows Forms в Visual C# 2005, посетите следующие Microsoft Developer Network (MSDN) веб-узла:
    http://msdn2.Microsoft.com/en-us/library/ms173077.aspx
  9. Нажмите клавишу F5 для запуска проекта. При нажатии кнопки Обзор, Открыть диалоговое окно появляется и позволяет просматривать документ Word, лист Microsoft Excel или презентацию PowerPoint. Выберите любой файл и нажмите кнопку Открыть. Документ откроется внутри компонента WebBrowser, и отображается в окне сообщения выводится имя документа Office server.

Что следует учесть при использовании элемента управления WebBrowser

При использовании элемента управления WebBrowser, необходимо учитывать следующее:
  • Элемент управления WebBrowser переходит асинхронно к документам. При вызове метода WebBrowser1.Navigate, вызов возвращает управление приложению Visual C# Прежде чем документ был полностью загружен. Если планируется документом, необходимо использовать NavigateComplete2 события уведомления об окончании загрузки документа. Использование Документ свойства элемента WebBrowser Объект, переданный для получения ссылки на объект документа Office, который, в приведенном выше коде устанавливается равным oDocument.
  • Элемент управления WebBrowser не поддерживает слияние меню.
  • В Internet Explorer версии 5.0 и более поздних версий можно выводить закрепленные панели инструментов с помощью следующего кода:
     // This is a toggle option, so call it once to show the 
     // toolbars and once to hide them. This works with Internet Explorer 5
     // but often fails to work properly with earlier versions.
     
     Object refmissing = System.Reflection.Missing.Value;
     axWebBrowser1.ExecWB(SHDocVw.OLECMDID.OLECMDID_HIDETOOLBARS, SHDocVw.OLECMDEXECOPT.OLECMDEXECOPT_DONTPROMPTUSER,ref refmissing , ref refmissing);
    					
  • Существуют несколько известных проблем с наличие более одного элемента управления WebBrowser в проекте и у каждого элемента управления, загруженные с того же типа документов (то есть, все документы Word или все листы Excel). Корпорация Майкрософт рекомендует использовать только один элемент управления для каждого проекта и перейдите к одному документу одновременно.

    С панели команд Microsoft Office, которые выводятся в отключенном является самой распространенной проблемой. Если у вас есть два элемента управления WebBrowser в той же форме, которые загружаются с помощью документов Microsoft Word, и при отображении панели инструментов с помощью одного из вышеуказанных способов только один набор панелей инструментов активна и работает правильно. Другой отключена и не может использоваться.
  • Чтобы очистить содержимое, элемент управления WebBrowser в Нажмите кнопку Обзор событий другой кнопки (или в любом другом подходящем месте) пустую страницу по умолчанию, используя следующий код:
       AxWebBrowser1.Navigate("about:blank");
    					

Что следует учесть при использовании элемента управления WebBrowser вместе с программой Microsoft Office 2007

По умолчанию программы выпуска 2007 системы Microsoft Office не открывать документы Office в веб-обозревателе. Такое поведение также влияет на элемент управления WebBrowser. Рекомендуется использовать пользовательский контейнер документов ActiveX вместо элемента управления WebBrowser, при разработке приложения, открывать документы Office 2007. Для получения дополнительных сведений о пользовательских контейнеры документов ActiveX щелкните следующий номер статьи базы знаний Майкрософт:
311765Элементы Visual C++ ActiveX для размещения документов Office в Visual Basic или HTML
Для существующих приложений, требующих обеспечения обратной совместимости с элементом управления WebBrowser можно изменить реестр, чтобы настроить обозреватель Internet Explorer. Этот метод можно использовать для настройки Internet Explorer для открытия документов Microsoft Office 2007 в веб-обозревателе. Для получения дополнительных сведений щелкните следующий номер статьи базы знаний Майкрософт:
927009Откроется новое окно при попытке просмотреть документ программы Microsoft Office 2007 в Windows Internet Explorer 7
Примечание При изменении реестра с помощью метода, описанного в статье базы знаний Майкрософт 927009 изменения влияют на элемент управления WebBrowser, который используется в приложении. Эти изменения влияют на все окна Internet Explorer. Кроме того этот метод не работает для всех будущих версий пакетов Microsoft Office. Поэтому рекомендуется использовать этот метод для обеспечения совместимости с существующим приложением.

Ссылки

Для получения дополнительных сведений об использовании элемента управления WebBrowser щелкните следующие номера статей базы знаний Майкрософт:
304562Visual Studio 2005 и Visual Studio.NET предоставляет элемент управления контейнера OLE для форм Windows Forms
243058 Как открыть документ Office с помощью элемента управления WebBrowser
162719 С помощью элемента управления WebBrowser из Visual Basic 5.0
202476 Ошибка: Невозможно редактировать документ Word в элемент управления WebBrowser или OLE
188271 Печать содержимого элемента управления веб-обозревателя из VB
191692 Shdocvw.dll не включается в пакет установки мастер упаковки и Развертывания
238313 Доступ к модели объектов документов Internet Explorer с помощью Visual Basic
927009 Откроется новое окно при попытке просмотреть документ программы Microsoft Office 2007 в Windows Internet Explorer 7

Свойства

Код статьи: 304662 - Последний отзыв: 6 июня 2011 г. - Revision: 4.0
Информация в данной статье относится к следующим продуктам.
  • Microsoft Visual C# 2005
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Office Excel 2007
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Office PowerPoint 2007
  • Microsoft Office PowerPoint 2003
  • Microsoft PowerPoint 2002 Standard Edition
  • Microsoft PowerPoint 2000 Standard Edition
  • Microsoft Office Word 2007
  • Microsoft Word 2002 Standard Edition
  • Microsoft Word 2000 Standard Edition
Ключевые слова: 
kbactivedocs kbautomation kbhowto kbwebbrowser kbmt KB304662 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке:304662

Отправить отзыв

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com