У меня есть древовидное представление, отображаемое на winform.Now, когда я нажимаю на xmlnode в древовидном представлении, его атрибуты отображаются в списке. Теперь я разделил всю логику в пользовательском интерфейсе и серверной части. Теперь я хочу, чтобы мой внутренний класс содержал метод для отображения атрибутов (имя и значение) выбранного узла xml, которые хранятся в массиве и возвращаются в виде строки моему внешнему классу в событии treev_AfterSelect. Как я могу это сделать? Мне нужно сохранить атрибуты узла, я нажимаю на winform в массиве строк и отображать в listbox. Вот код, который у меня есть для моего класса Backhand
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;
Класс My Front end (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 использовался в заднем плане.
Спасибо ....