views:

2190

answers:

5

In a WebBrowser control, how do I remove HtmlElement objects? There are no methods in the HtmlElement class to accomplish this. As a workaround, I can create a "dummy" HtmlElement (without inserting it into the HtmlDocument), into which I then insert (via AppendChild) the HtmlElement objects to be removed. This feels like a hack. Is there a better way to do this?

P.S. I want to retain the HtmlElement in memory to be used later, not simply destroy it (which is what setting its parent's innerHtml to an empty string would do)

+1  A: 

The only other way I know is to change the parent's InnerHtml.

configurator
A: 

There's a method called IHTMLDOMNode::removeNode which looks like the "official" way to do this, but this is unmanaged code in mshtml.dll. I'm looking for something more suitable for C#.

Jen
+1  A: 

You can delete the element by setting its outerhtml to an empty string.

elem.OuterHtml = ""

I hope this is what you were looking for.

gm

Gerhard
+1  A: 

Hi,

Look at this WebControl Heritance, with loads of feature: http://www.codeproject.com/KB/miscctrl/csEXWB.aspx

You could add a remove method to del element by id.

Hope this helps

alexl
A: 

Add a reference to Microsoft.mshtml (from .Net tab)

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