У меня проблема с добавлением дочернего узла к определенному узлу. Вот мой код: Метод окраски дереваДобавление дочернего узла к определенному узлу в C#
public void paint()
{
treeView1.Nodes.Clear();
TreeNode root = new TreeNode("Katalogas");
root.Name = "root";
treeView1.Nodes.Add(root);
foreach (string or in categories)
{
TreeNode subcat = new TreeNode(or);
subcat.Name = or;
root.Nodes.Add(subcat);
}
foreach (Preke or in PrekiuListas)
{
TreeNode subcat = new TreeNode(or.name);
subcat.Name = or.name;
TreeNode temp = FindNode(or.category);
temp.Nodes.Add(subcat);
}
Метод нахождения узла
private TreeNode FindNode(String name)
{
foreach (TreeNode node in treeView1.Nodes[0].Nodes)
{
if (node.Nodes.Count > 0)
return FindNode(name);
if (node.Name == name)
return node;
}
return null;
}
Я могу добавить один дочерний узел в обоих узлах, но когда я пытаюсь добавить другой, я получаю переполнение стека исключение .. Пожалуйста, помогите, спасибо
Спасибо за ответ. Отредактировал мой код, похожий на этот, все тот же исключение переполнения стека. Любое другое решение? – user3061057
@ user3061057 Я не уверен, как именно вы его пробовали, похоже, у вас очень много узлов? поэтому использование ** рекурсивного метода ** не будет работать из-за ограничения в размере стека вызовов. Попробуйте использовать обновленный код **, но **, я думаю, вы должны рассмотреть ответ *** Prahlad Yeri *** с использованием метода TreeNodeCollection.Find, это очень удобно. –