SO WIRD´S GEMACHT: Verwenden eines WebBrowser-Steuerelements zum Öffnen eines Office-Dokuments in Visual C# .NET

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 304662 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Dieser Artikel wurde zuvor veröffentlicht unter D304662
Dieser Artikel ist eine Übersetzung des folgenden englischsprachigen Artikels der Microsoft Knowledge Base:
304662 HOWTO: Use the WebBrowser Control to Open Office Documents with Visual C# .NET
Eine Microsoft Visual Basic .NET-Version dieses Artikels finden Sie unter 304643.
Bitte beachten Sie: Bei diesem Artikel handelt es sich um eine Übersetzung aus dem Englischen. Es ist möglich, dass nachträgliche Änderungen bzw. Ergänzungen im englischen Originalartikel in dieser Übersetzung nicht berücksichtigt sind. Die in diesem Artikel enthaltenen Informationen basieren auf der/den englischsprachigen Produktversion(en). Die Richtigkeit dieser Informationen in Zusammenhang mit anderssprachigen Produktversionen wurde im Rahmen dieser Übersetzung nicht getestet. Microsoft stellt diese Informationen ohne Gewähr für Richtigkeit bzw. Funktionalität zur Verfügung und übernimmt auch keine Gewährleistung bezüglich der Vollständigkeit oder Richtigkeit der Übersetzung.
Alles erweitern | Alles schließen

Auf dieser Seite

Zusammenfassung

Sie möchten möglicherweise ein Microsoft Office-Dokument direkt in einem Visual C# .NET-Formular anzeigen lassen oder das Dokument in dieses Formular einbetten. In Visual C# .NET steht kein OLE-Steuerelement zur Verfügung, mit dessen Hilfe Sie ein Office-Dokument in ein Formular einbetten könnten. Wenn Sie ein vorhandenes Dokument einbetten und als direktes ActiveX-Dokumentobjekt in einem Visual C# .NET-Formular öffnen möchten, besteht eine potenzielle Lösung dieses Problems in der Verwendung des Microsoft WebBrowser-Steuerelements. Dieser Artikel beschreibt, wie Sie zu einem vorhandenen Office-Dokument navigieren und es in einem Visual C# .NET-Formular über das WebBrowser-Steuerelement anzeigen lassen können.

Weitere Informationen

ActiveX-Dokumente sind OLE-Objekte, die eingebettet werden können. Sie verhalten sich jedoch nicht wie herkömmliche OLE-Objekte, sondern eher wie ActiveX-Steuerelemente. Im Gegensatz zu herkömmlichen eingebetteten Objekten sind ActiveX-Dokumente nicht dafür geeignet, als in einem umfangreicheren Dokument enthaltene Objekte verwendet zu werden. Stattdessen werden sie als vollständige Dokumente betrachtet, die lediglich angezeigt (z.B. mit Microsoft Internet Explorer) oder mit anderen Dokumenten zu einer Ressource (z.B. zu einer Microsoft Office-Sammelmappendatei) zusammengefasst werden können. Ein in ein WebBrowser-Steuerelement eingefügtes ActiveX-Dokument ist immer aktiv. Eine Aktivierung für die direkte Bearbeitung ist daher - anders als bei herkömmlichen eingebetteten OLE-Objekten - nicht sinnvoll.

Microsoft Visual C# .NET unterstützt derzeit das direkte Einbetten von ActiveX-Dokumenten zwar nicht, sie können jedoch das WebBrowser-Steuerelement zu diesem Zweck verwenden. Das WebBrowser-Steuerelement (Shdocvw.dll) ist Bestandteil des Internet Explorer und kann nur auf Systemen verwendet werden, auf denen Internet Explorer installiert ist.

Erstellen einer Visual C# .NET-Anwendung zum Öffnen von Office-Dokumenten

Gehen Sie folgendermaßen vor, um eine Visual C# .NET-Anwendung zum Öffnen von Office-Dokumenten zu erstellen:
  1. Erstellen Sie ein neues Windows-Anwendungsprojekt in Visual C# .NET. Form1 wird standardmäßig erstellt.
  2. Klicken Sie im Menü Extras auf Toolbox anpassen, um das Dialogfeld Toolbox anpassen zu öffnen. Fügen Sie auf der Registerkarte COM-Steuerelemente einen Verweis auf den Microsoft Webbrowser hinzu. Klicken Sie auf OK, um das WebBrowser-Steuerelement zur Toolbox für Windows-Formulare hinzuzufügen. Das WebBrowser-Steuerelement wird mit der Beschriftung Explorer in der Toolbox angezeigt.
  3. Fügen Sie mithilfe der Toolbox ein WebBrowser-Steuerelement, ein OpenFileDialog-Steuerelement (Dialogfeld "Datei öffnen") und ein CommandButton-Steuerelement (Befehlsschaltfläche) zu Form1 hinzu. Hierdurch werden der Klasse "Form1" die Membervariablen AxWebBrowser1, OpenFileDialog1 und Button1 hinzugefügt.
  4. Doppelklicken Sie in Form1 auf Button1. Hierdurch wird das Ereignis Button1_Click zu Form1 hinzugefügt.
  5. Fügen Sie im Code-Fenster für Form1 den folgenden Namespace zur Liste hinzu:
    using System.Reflection;
    					
  6. Definieren Sie wie folgt ein privates Member in der Klasse Form1:
    private Object oDocument; 
  7. Fügen Sie am Ende der Methode InitializeComponent der Klasse "Form1" den folgenden Code hinzu, um die Ereignisse Form1_Load, Form1_Closed und axWebBrowser1_NavigateComplete2 verarbeiten zu lassen:
    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. Ersetzen Sie den folgenden Code
    private void button1_Click(object sender, System.EventArgs e)
    {
    }
    					
    durch den Code:
    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() ); 
    }
    					
  9. Drücken Sie die Taste [F5], um das Projekt auszuführen. Wenn Sie auf Durchsuchen klicken, wird das Dialogfeld Öffnen angezeigt, in dem Sie zu einem Word-Dokument, einem Excel-Arbeitsblatt oder einer PowerPoint-Präsentation navigieren können. Wählen Sie eine beliebige Datei aus, und klicken Sie anschließend auf Öffnen. Das Dokument wird im WebBrowser-Steuerelement geöffnet. Außerdem wird ein Meldungsfeld mit dem Namen des Office-Dokumentservers angezeigt.

Bei der Verwendung des WebBrowser-Steuerelements zu beachtende Faktoren

Folgendes sollten Sie bei der Verwendung des WebBrowser-Steuerelements beachten:
  • Das Browsen zu Dokumenten mit dem WebBrowser-Steuerelement erfolgt asynchron. Wenn Sie den Aufruf WebBrowser1.Navigate ausführen, übergibt der Aufruf die Steuerung bevor das Dokument vollständig geladen wurde wieder an die Visual C#-Anwendung. Wenn Sie planen, das enthaltene Dokument zu automatisieren, müssen Sie das Ereignis NavigateComplete2 verwenden, damit Sie benachrichtigt werden, sobald das Dokument vollständig geladen wurde. Verwenden Sie die Eigenschaft Dokument des WebBrowser-Objekts, um einen Verweis auf das Office-Dokumentobjekt abzurufen, das im vorstehenden Code auf oDocument gesetzt ist.
  • Das WebBrowser-Steuerelement unterstützt keine Menüzusammenführung.
  • In den Internet Explorer-Versionen 5.0 und höher haben Sie die Möglichkeit, verankerte Symbolleisten mithilfe des folgenden Codes anzeigen zu lassen:
     // 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);
    					
  • Es sind mehrere Probleme bekannt, die auftreten können, wenn mehr als ein WebBrowser-Steuerelement in einem Projekt vorhanden ist oder alle Steuerelemente mit dem gleichen Typ eines Office-Dokuments (d.h. nur Word-Dokumente oder nur Excel-Tabellenblätter) geladen werden. Microsoft empfiehlt, nur ein Steuerelement pro Projekt zu verwenden und nur zu jeweils einem Dokument zu navigieren.

    Die häufigsten Probleme treten im Zusammenhang mit Befehlsleisten von Microsoft Office auf, die scheinbar deaktiviert sind. Wenn zwei WebBrowser-Steuerelemente auf dem gleichen Formular vorhanden sind, beide mit Word-Dokumenten geladen werden und Sie die Symbolleisten unter Anwendung eines der vorstehend beschriebenen Verfahren angezeigt haben, ist nur ein Symbolleistensatz aktiv und arbeitet ordnungsgemäß. Der andere Symbolleistensatz ist deaktiviert und kann nicht verwendet werden.
  • Navigieren Sie im Click-Ereignis einer anderen Befehlsschaltfläche (oder an einer anderen geeigneten Stelle in Ihrem Code) zur standardmäßigen Leerseite, um den aktuellen Inhalt des WebBrowser-Steuerelements zu löschen. Verwenden Sie dazu den folgenden Code:
       AxWebBrowser1.Navigate("about:blank");
    					

Informationsquellen

Weitere Informationen zum Verwenden des WebBrowser-Steuerelements finden Sie in den folgenden Artikeln der Microsoft Knowledge Base:
304562 INFO: Visual Studio .NET stellt kein OLE-Containersteuerelement für Windowsformulare bereit
243058 HOWTO: Use the WebBrowser Control to Open an Office Document
162719 HOWTO: Use the WebBrowser Control from Visual Basic 5.0
202476 BUG: Cannot Edit Word Document in OLE or WebBrowser Control
188271 HOWTO: Print Contents of the Web Browser Control From VB
191692 PRB: Shdocvw.dll Is Not Included in PDW Setup Package
238313 PRB: Accessing the Internet Explorer Document Object Model From Visual Basic

Eigenschaften

Artikel-ID: 304662 - Geändert am: Montag, 16. Februar 2004 - Version: 5.2
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Office Excel 2003
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Office PowerPoint 2003
  • Microsoft PowerPoint 2002 Standard Edition
  • Microsoft PowerPoint 2000 Standard Edition
  • Microsoft Office Word 2003
  • Microsoft Word 2002 Standard Edition
  • Microsoft Word 2000 Standard Edition
Keywords: 
kbhowto kbactivedocs kbwebbrowser kbautomation KB304662
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

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