Программно заполнить 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
    • Cat2
      • 12,2
        • 12.2.77
        • 12.2.26

Как можно программно добавить элементы 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.
Другие вопросы по тегам