C# 使用C以编程方式删除HtmleElement对象#

C# 使用C以编程方式删除HtmleElement对象#,c#,browser,webbrowser-control,dom,C#,Browser,Webbrowser Control,Dom,在WebBrowser控件中,如何删除HtmlElement对象?HtmlElement类中没有方法可以实现这一点。作为一种解决方法,我可以创建一个“虚拟”HtmlElement(无需将其插入HtmlDocument),然后(通过AppendChild)将要删除的HtmlElement对象插入其中。这感觉像一个黑客。有更好的方法吗 另外,我希望将HtmlElement保留在内存中以供以后使用,而不是简单地销毁它(这就是将其父级的innerHtml设置为空字符串所做的)我知道的唯一其他方法是更改父

WebBrowser
控件中,如何删除
HtmlElement
对象?
HtmlElement
类中没有方法可以实现这一点。作为一种解决方法,我可以创建一个“虚拟”
HtmlElement
(无需将其插入
HtmlDocument
),然后(通过
AppendChild
)将要删除的
HtmlElement
对象插入其中。这感觉像一个黑客。有更好的方法吗


另外,我希望将
HtmlElement
保留在内存中以供以后使用,而不是简单地销毁它(这就是将其父级的
innerHtml
设置为空字符串所做的)

我知道的唯一其他方法是更改父级的。

有一个名为
IHTMLDOMNode::removeNode
的方法,它看起来像“官方”方法来实现这一点,但这是
mshtml.dll中的非托管代码。我正在寻找更适合C#的代码。

您可以通过将元素的outerhtml设置为空字符串来删除该元素

elem.OuterHtml=“”

我希望这就是你想要的


gm

看看这个网络控制系统,它有很多功能:

您可以通过id向del元素添加remove方法


希望这有助于添加对Microsoft.mshtml的引用(从.Net选项卡)


不能[始终]与Internet Explorer 6一起使用。例如,基本标记会阻止此方法。谢谢,这让我能够找到它。我的代码可以与:HTMLDocument HTMLDocument=(HTMLDocument)webBrowser1.Document.DomDocument;IHTMLElement tmpElement=htmlDoc.getElementById(“xBar”);IHTMLDOMNode tmpNode=(IHTMLDOMNode)tmpElement;tmpNode.parentNode.removeChild(tmpNode);或者,您可以使用dynamic关键字保存所有内容的显式强制转换,但这样您就不会得到方法存在的编译时验证。
using Microsoft.mshtml;
....
{
...
    // To Remove     
    HTMLDocumentClass htmldoc = wbCtrl.Document.DomDocument as HTMLDocumentClass;
    IHTMLDOMNode node = htmldoc.getElementById("xBar") as IHTMLDOMNode;
    node.parentNode.removeChild(node);
...
}