У меня есть следующее дерево:
Animals
|
|___Zebra
| |__Head
| |__Arms
| |__Legs
|
|___Monkey
|__Head
|__Arms
|__Legs
У каждого животного есть идентификационный номер, хранящийся в поле «Тег», а их имя находится в поле «Имя» узла. Я хочу нажать кнопку с надписью «Сортировать по идентификатору», чтобы «Зебра» выше превратилась в «14» и т. д., а затем прибегать численно. Однако я хочу, чтобы дети оставались с головой, руками, ногами в порядке. Когда я использую следующий код, он работает, но он также пересортирует голову, руки, ноги в руки, голову, ноги. Я пробовал NodeSorter, но не получил никаких других результатов. Я также очень новичок в C #, поэтому, возможно, я неправильно его реализовал. :) Я также использую пользовательский узел с несколькими дополнительными полями для хранения данных и логических значений. Это то, на что ссылается «JacksNode» ниже.
Вот код:
public static void sortByAnimalID(TreeView tv)
{
tv.BeginUpdate();
foreach (TreeNode treeNode in tv.Nodes[0].Nodes)
{
if (((JacksNode)treeNode).IsAnimal)
{
treeNode.Text = Convert.ToString(treeNode.Tag);
treeNode.Name = Convert.ToString(treeNode.Tag);
}
}
tv.Sort();
tv.EndUpdate();
}
Любые идеи о том, что я делаю неправильно? Я искал в Интернете две недели и был перегружен всеми статьями с древовидной структурой. Однако ни один из них не был таким конкретным. Спасибо ребятам/девушкам за любые предложения.