2017-03-25 13 views
1

私が働いていたいくつかの時間前に書かれたコードがあります。C#が[]型の表現に「オブジェクト」でインデックスを適用することはできません

IHTMLDocument3 doc3 = (IHTMLDocument3)doc; 
      IHTMLDocument7 doc7 = (IHTMLDocument7)doc; 

      IHTMLElementCollection elc; 
      IHTMLElement el; 
      IHTMLElement chld; 
      IHTMLDOMNode dn; 

if ((chld = el.children[1].children[0].children[1]) != null 
       && chld.tagName == "A" 
       ) 

を今C#は(、.NET 3.5を2008年を発現する) ができないことに文句を

何が問題でしょう[1] .... el.childrenする参照型 'オブジェクトの

の発現に[]でインデックスを適用しますか?私はそれが以前に働いたことを知っ すべての手がかりをありがとう

更新: 私はVS2012でテストして動作し、コンパイルして正常に動作します。

private void Form1_Load(object sender, EventArgs e) 
{ 
    IHTMLElement test = null; 

    IHTMLElement xxx = test.children[1]; 

} 

CONFIRMED: VS2008で同じコードが動作していません。唯一の違いは、別のVSコマンドプロンプト(.NET版の場合はそれぞれ)を使用して、プロジェクトごとにmshtml.dllを再生成する必要があることです。私は本当に...大歓迎任意のヘルプを理解していない

sn -k mykey.snk 
tlbimp.exe /out:mshtml.dll /keyfile:mykey.snk mshtml.tlb 

世代は、同じコマンドを使用して行われました!

+0

私は、 'IHTMLElement'クラスのコードと、プロパティの型またはコード' children'を参照する必要があります – Vikhram

+0

IHTMLElementはmshtmlの標準であり、IE11用に再生成されています。大丈夫です。子はDOMノードの子であり、これもそのまま使用されるMicrosoft標準です。 – orfruit

+0

'子ども - >'子どもたち。大文字の 'C 'ではないでしょうか? – TEK

答えて

0

私があなたの代わりにAllまたはChildrenプロパティを使用することができると思う子どもたちがインタフェースIHtmlElement、IHtmlElementプロパティhereを確認してくださいという名前のコレクションプロパティが存在しないようです。

+0

私はmshtml.dllが問題はありませんが、私は再作成する同じ手順に従います(Windowsのデフォルトを含むものは.NET 1以上です)。私はIHTMLDocument7のような要素のために再作成しなければならなかった – orfruit

関連する問題