2012-02-10 36 views
1

キャスト方法mshtml.IHTMLDivElementmshtml.HTMLDivElementClassmshtml.HTMLDivElementClassにmshtml.IHTMLDivElementをキャストするにはどうすればよいですか?

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

+0

なぜキャストを行う必要がありますか?あなたのコメントアウトされたコードで何が間違っていますか? – vcsjones

+0

@vcsjones HTMLDivElementClassの中に必要なすべてのプロパティにアクセスできないためです。 IHTMLDivElementには2つのプロパティしかありません。たとえば、DIVなどのIDを取得する必要があります。 –

答えて

1

あなたのコードは、ほぼ正しいです。あなたが何を望んでいるか分からない。

それは私のためにと「DIV」オブジェクトで働いている

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を」あなたのコードを変更してください。タグだけをページから取得し、次のコード行を使用します。要素をチェックするためにあなたの状態を削除します代わりに

mshtml.IHTMLElementCollection collection = (mshtml.IHTMLElementCollection)objDocument.body.all; 

mshtml.IHTMLElementCollection collection = (mshtml.IHTMLElementCollection)objDocument.getElementsByName("div"); 

はDIVかではありません。

このヘルプをお寄せください。

関連する問題