Ich habe ein WebBrowser
-Dokument gesetzt, um im Bearbeitungsmodus zu sein. Ich versuche, den inneren Text des Körperelements zu manipulieren, indem ich WebBrowser.Document.Body.InnerText
verwende, WebBrowser.Document.Body
bleibt jedoch null.
Hier ist der Code, wo ich den Inhalt des Dokuments erstellen:
%Vor% Ich kann Code bearbeiten und alles in Ordnung, aber ich verstehe nicht, warum HtmlEditor.Document.Body
Null bleibt. Ich weiß, ich könnte immer den Dokumentkörper immer zurücksetzen, wenn ich Text in das Formular laden muss, aber ich würde lieber verstehen, warum das so ist, wie es ist, wenn nichts anderes als das Wissen.
Jede Hilfe wird sehr geschätzt.
Sie müssen warten, bis das DocumentCompleted
-Ereignis des Webbrowsers ausgelöst wird, damit DomDocument.Body
nicht null ist. Ich habe das gerade getestet, um es zu verifizieren. Ich nehme an, die Frage bleibt immer noch: Wie können Sie über die zugrunde liegende COM-Schnittstelle bearbeiten, wenn das Dokument noch nicht vollständig geladen ist?
Ich habe überprüft, ob die Zeiger IHTMLDocument2
in DocumentCompleted und im Konstruktor identisch sind. Sie sind, die anzeigen können, dass das zugrundeliegende COM-Objekt ein einzelnes HTML-Dokumentobjekt wiederverwendet. Es sieht so aus, als hätten alle Änderungen, die Sie im Konstruktor vornehmen, eine ziemlich gute Chance, überschrieben zu werden oder eine Ausnahme auszulösen.
Wenn ich das zum Beispiel im Konstruktor mache, erhalte ich einen Fehler:
%Vor%Wenn ich dasselbe in einem DocumentCompleted-Handler mache, funktioniert es gut.
Hoffe, das hilft. Danke.
Verwenden Sie DocumentCompleted
zuerst das Ereignis Wenn das WebBrowser-Steuerelement das Laden eines Dokuments beendet:
oder einfacher Weg:
%Vor%Tags und Links .net c# winforms webbrowser-control