如何将mshtml.IHTMLDivElement强制转换为mshtml.HTMLDivElementClass?

时间:2012-02-10 15:35:54

标签: c# .net mshtml

如何将 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才能获得它的所有成员。

enter image description here

1 个答案:

答案 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的条件。

希望对你有所帮助。