如何将 mshtml.IHTMLDivElement 投射到 mshtml.HTMLDivElementClass ?
IHTMLElementCollection collection = doc.body.all;
foreach (var htmlElem in collection)
{
if (htmlElem is mshtml.IHTMLDivElement)
{
mshtml.IHTMLDivElement div = htmlElem as mshtml.IHTMLDivElement;
if (div != null)
{
// HTMLDivElementClass divClass = (HTMLDivElementClass)div; ?????????
}
}
}
我需要访问HTMLDivElementClass才能获得它的所有成员。
答案 0 :(得分:1)
您的代码几乎正确无误。不确定你想要什么。
请更改您的代码,如下所示
mshtml.IHTMLElementCollection collection = (mshtml.IHTMLElementCollection)objDocument.body.all;
foreach (var htmlElem in collection)
{
if (htmlElem is mshtml.IHTMLDivElement)
{
mshtml.HTMLDivElementClass div = htmlElem as mshtml.HTMLDivElementClass;
if (div != null)
{
//DO YOUR CODE HERE
//div.IHTMLElement_id
}
}
}
它适用于我,而“div”对象的类型为“HTMLDivElementClass”
还有一个建议,如果你只想从页面中获取所有DIV标签,那么请使用以下代码行。
mshtml.IHTMLElementCollection collection = (mshtml.IHTMLElementCollection)objDocument.getElementsByName("div");
而不是
mshtml.IHTMLElementCollection collection = (mshtml.IHTMLElementCollection)objDocument.body.all;
这将删除您检查元素是否为DIV的条件。
希望对你有所帮助。