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)
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
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);
...
}
The only other way I know is to change the parent's InnerHtml.
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
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#.
来源:https://stackoverflow.com/questions/554233/removing-htmlelement-objects-programmatically-using-c-sharp