2009-02-16 10 views
6

In einem WebBrowser Steuerelement, wie entferne ich HtmlElement Objekte? Es gibt keine Methoden in der Klasse HtmlElement, um dies zu erreichen. Als Workaround kann ich einen "Dummy" HtmlElement erstellen (ohne ihn in den HtmlDocument einzufügen), in den ich dann die zu entfernenden HtmlElement Objekte (über AppendChild) einfüge. Das fühlt sich an wie ein Hack. Gibt es einen besseren Weg, dies zu tun?Entfernen von HtmlElement-Objekten programmgesteuert mit C#

P.S. Ich möchte die HtmlElement in Erinnerung behalten später verwendet werden soll, nicht einfach zu zerstören (was, was Einstellung ist seine Eltern innerHtml auf einen leeren String tun würde)

Antwort

1

Es gibt eine Methode namens IHTMLDOMNode::removeNode, die aussieht wie die "offizielle" Methode, dies zu tun, aber das ist nicht verwalteter Code in mshtml.dll. Ich suche nach etwas passenderem für C#.

2

Sie können das Element löschen, indem Sie seinen äußerenHTML auf eine leere Zeichenfolge festlegen.

elem.OuterHtml = ""

Ich hoffe, das ist das, was Sie suchen.

gm

+0

Nicht [immer] mit dem Internet Explorer, 6. Der BASE-Tag, zum Beispiel arbeitet wider diese Methode. – user38329

3

einen Verweis auf Microsoft.mshtml hinzufügen (von .Net Registerkarte)

using Microsoft.mshtml; 
.... 
{ 
... 
    // To Remove  
    HTMLDocumentClass htmldoc = wbCtrl.Document.DomDocument as HTMLDocumentClass; 
    IHTMLDOMNode node = htmldoc.getElementById("xBar") as IHTMLDOMNode; 
    node.parentNode.removeChild(node); 
... 
} 
+0

Danke, das hat mir geholfen, es herauszufinden. Mein Code funktioniert mit: HTMLDocument htmlDoc = (HTMLDocument) webBrowser1.Document.DomDocument; IHTMLElement tmpElement = htmlDoc.getElementById ("xBar"); IHTMLDOMNode tmpNode = (IHTMLDOMNode) tmpElement; tmpNode.parentNode.removeChild (tmpNode); – Xantix

+0

Alternativ können Sie das dynamische Schlüsselwort verwenden, um das explizite Umwandeln von allem zu speichern, aber dann wird keine Kompilierzeitüberprüfung für die vorhandenen Methoden angezeigt. – Xantix