我在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用于反手。 感谢....
答案 0 :(得分:4)
你的循环太过分了。
for( int i = 0; i <= attCol.Count;i++)
应该是
for( int i = 0; i < attCol.Count;i++)