проблема добавления узла в виде дерева - PullRequest
0 голосов
/ 05 января 2011

У меня есть один класс с именем Holder (holder.cs), который содержит следующее:

  string name;
  List<String> overView;

Оба имеют get и set accesors.

Теперь проблема заключается в получении дерева со всемиэлементы overView как родительский узел, который перечисляет все имена, которые принадлежат ему ниже.

Так что в моем treeviewForm.cs у меня есть следующее, чтобы правильно перечислить элементы overView.Имя вводится через текстовое поле, а overView - это всего лишь 4 элемента, которые могут быть или не могут быть выбраны с помощью флажка.

Но я понятия не имею, как именно я могу добавить имена в узел overView.Так как я не могу соединить что-то позади treeViewList.Nodes.Add(list[i].overView[j], куда должны прийти имена.

listForm.cs class:

    List<Holder> list;

    private void ShowOverviewWithName() 
    {
        treeViewList.Nodes.Clear();

        for (int i=0; i < list.Count; i++) 
        {
            for (int j=0; j < list[i].overView.Count; j++)
            {
                //adds the overView name
                treeViewList.Nodes.Add(list[i].overView[j]); 
            }
        }

        treeViewList.ExpandAll();
    }

Итак, в основном, отображение дерева, которое я ищу, это:

Overview1
   name1
   name2
   name3
Overview2
   name7
   anyothernamethatbelongshere...

Со всеми именами, которые относятся к обзору.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 05 января 2011

Я не уверен в вашей проблеме ...

, но предположим, что у вас есть этот код:

var h1 = new Holder{ name = "name1", overView = new List<string>{ "Overview1", "Overview2" } };
var h2 = new Holder{ name = "name2", overView = new List<string>{ "Overview1" } };
var h3 = new Holder{ name = "name3", overView = new List<string>{ "Overview1" } };
var h4 = new Holder{ name = "name4", overView = new List<string>{ "Overview2" } };

List<Holder> list = new List<Holder> { h1, h2, h3, h4 };

treeViewList.Nodes.Clear();

for (int i = 0; i < list.Count; i++)
{
    for (int j = 0; j < list[i].overView.Count; j++)
    {
        string overviewName = list[i].overView[j];

        //adds the overView name if doesn't exist yet
        TreeNode parent;
        if (!treeViewList.Nodes.ContainsKey(overviewName))
            parent = treeViewList.Nodes.Add(overviewName,overviewName);
        else
            parent = treeViewList.Nodes[overviewName];

        // adds the name under the overView
        parent.Nodes.Add(list[i].name);
    }
}

treeViewList.ExpandAll();

, вы получите следующее дерево:

alt text

0 голосов
/ 05 января 2011

Вам необходимо:

  1. Создать узел верхнего уровня "Overviewx"
  2. Добавить дочерние узлы в только что созданный узел верхнего уровня
  3. Добавитьузел верхнего уровня к дереву
  4. Повторите для всех узлов верхнего уровня.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...