问题
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:
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
回答2:
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);
...
}
回答3:
The only other way I know is to change the parent's InnerHtml.
回答4:
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
回答5:
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