Программно заполнить TreeView во время выполнения с заданной структурой
Я работаю над небольшой программой, которая собирает некоторые данные и должна отображать их в элементе управления Treeview или DotnetBars advTree.
При событии нажатия кнопки будут собраны некоторые данные, и вывод (строка) будет выглядеть следующим образом. (структура древовидных представлений)
myTree.add(1,-1,'','');
myTree.add(260, 1, 'All Releases', '');
myTree.add(6,260, 'Cat1', ''
myTree.add(7,6, '20.0.2'', ''
myTree.add(8,7, '20.0.21', '&some stuff'
myTree.add(9,7, '20.0.20a', '&some stuff'
myTree.add(10,7, '20.0.5', '&some stuff'
myTree.add(11,260, 'Cat2', ''
myTree.add(12,11, '12.2', ''
myTree.add(13,12, '12.2.77', '&some stuff'
myTree.add(14,12, '12.2.26', '&some stuff'
Первый столбец содержит идентификатор узла, а второй столбец содержит идентификатор, от которого он является дочерним узлом. Третий содержит текст узла, который должен отображаться в виде дерева, последний предназначен для более поздней цели (вывод значения).
Результат: (пример Treeview)
- Все релизы
- Cat1
- 20.0.2
- 20.0.21
- 20.0.20a
- 20.0.5
- 20.0.2
- Cat2
- 12,2
- 12.2.77
- 12.2.26
- 12,2
- Cat1
Как можно программно добавить элементы Treeview со всеми дочерними элементами?
1 ответ
class MyTreeNode
{
public String NodeTitle;
public List<MyTreeNode> children;
}
Я бы встроил желаемую структуру в объект, а затем рекурсивно провел поиск по свойству children, чтобы узнать, нужно ли мне добавить больше веток.
public AddBranch(MyTreeNode parentNode)
{
MyTree.Add(parentNode.NodeTitle);
foreach (var node in parentNode.children)
{
AddBranch(node);
}
}
// Note this is a rough mock code just to give you an idea of what recursion is.