通过String数组访问属性的IndexOutOfRangeException?

时间:2009-03-12 21:00:15

标签: xml winforms exception events

我在winform上显示了一个treeView.Now当我点击树视图中的xmlnode时,它的属性会显示在列表框中。现在我已经在UI和后端部分划分了整个逻辑。现在我想要的是我的后端类包含显示单击的xml节点的属性(名称和值)的方法,这些方法存储在数组中,并作为字符串返回到treev_AfterSelect事件中的前端类。我该怎么做?我需要存储节点的属性我点击字符串数组中的winform并显示在listbox中。这是我的反手类的代码 enter code here

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)类包含此代码以检索属性和值,显示 它在Listbox上。

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用于反手。 感谢....

1 个答案:

答案 0 :(得分:4)

你的循环太过分了。

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

应该是

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