Removing HtmlElement objects programmatically using C#

こ雲淡風輕ζ 提交于 2019-12-21 12:44:07

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!