2009-03-12 9 views
0

私はツリービューでxmlnodeをクリックするとwinform.Nowに表示されたツリービューを持っています。その属性はlistbox.Nowに表示され、UIとバックエンド部分のロジック全体が分割されています。今私のバックエンドクラスには、クリックされたXMLノードのatrributes(名前と値)を表示するメソッドが含まれています。これらは配列に格納され、treev_AfterSelectイベントのフロントエンドクラスに文字列として返されます。私はそれを行うことができますどのように?私はlistbox.Hereで文字列配列やディスプレイでWinフォーム上でクリックしたノードの属性を格納する必要があるが、私は enter code hereStringOutOfRangeException文字列配列を介して属性にアクセスしていますか?

public string[] selectedNode(XmlNode eventNode) 
    { 
     XmlAttributeCollection attCol = eventNode.Attributes; 
     string[] strArray = new string[attCol.Count]; 
     if (attCol != null) 
      for(int i = 0; i <= attCol.Count;i++) 
      { strArray[i] = "Attribute name: " + attCol[i].Name+","+" Attribute value: " + attCol[i].Value;//IndexOutOfRange Exception 
        } 
      return strArray; 
    } 

ここで私は私のバックハンドのクラスのために持っているもののコードですIndexOutOfRangeExceptionの例外が発生しました:渡されるインデックスが範囲外です。このライン上

strArray[i] = "Attribute name: " + attCol[i].Name+","+" Attribute value: " + attCol[i].Value; 

私のフロントエンド(UI)クラスは、属性と値、リストボックスに表示 それを取得するために、このコードが含まれています。

private void treeView1_AfterSelect(object sender, System.Windows.Forms.TreeViewEventArgs e) 
    { 
     classObj = new MytreeNodeClass(); 
     listBox1.Items.Clear(); 
     XmlNode xNode = e.Node.Tag as XmlNode; 
     string[] arrStr = classObj.selectedNode(xNode); 
     listBox1.Items.Add(arrStr); //Is this the correct syntax to retrieve the data in listbox?? 
    } 

私はどこに間違っていますか?例外を取り除き、コードを正常に実行するために、何をどこに置くべきでしょうか?私はバックノートでTreenodeを使用したくありません。 ありがとうございました...

答えて

4

あなたのループは遠すぎます。

for(int i = 0; i <= attCol.Count;i++) 

は答えを

for(int i = 0; i < attCol.Count;i++) 
+0

ねえのおかげでなければなりませんが、リストボックスには、それはString []型の配列 表示されるuがplzのリストボックスに結果を得るために正しいコードがどうなるかを教えてもらえますか? ありがとうございます... –

関連する問題