Outofrange exeption в treenode
Я получаю ошибку, когда пытаюсь петли через treeNodes.
Вот как выглядит мой код. Я хотел пропустить последний узел каждого дочернего узла.
var nodeList = inXmlNode.ChildNodes; for (var x = 0; x <= nodeList.Count - 1; x++) { var xNode = inXmlNode.ChildNodes[x]; if (xNode.Attributes?["NAME"] != null && xNode.Attributes?["TYPE"] != null) { var tNode2 = new TreeNode(xNode.Attributes["NAME"].Value, ObjectImageIndex, ObjectImageIndex); inTreeNode.Nodes.Add(tNode2); tNode2 = inTreeNode.Nodes[x]; // This is where the exception is thrown (x is 20) but inTreeNode.Nodes only has 1 AddNode(xNode, tNode2); } else { var xmlAttribute = xNode.Attributes?["Name"]; if (xmlAttribute == null) continue; var tNode = new TreeNode(xmlAttribute.Value); //inTreeNode.Nodes.Add(tNode); //BECAUSE I WANT TO SKIP THE LAST CHILD OF EACH NODE //tNode = inTreeNode.Nodes[x]; //AddNode(xNode, tNode); } }
Что я уже пробовал:
Я пробовал устанавливать уровень и проверять наличие дочерних узлов
Philippe Mori
Научитесь использовать отладчик... Если вы получили исключение в пункте 20, то, вероятно, выполнили else
часть итерации непосредственно перед тем, как и так как узел не добавляется в этом случае, у вас есть один узел меньше, чем текущий x
на следующей итерации.