Почему элемент управления TreeView создает пустой узел? - PullRequest
2 голосов
/ 09 декабря 2011

Фрист см. Следующий код и изображения.

Код A

treeView1.Nodes.Add("Node A");
treeView1.Nodes.Add("Node B");

Выход:enter image description here

Код B

        TreeNode tn = new TreeNode();
        tn.Nodes.Add("Node A");
        tn.Nodes.Add("Node B");
        treeView1.Nodes.Add(tn);

enter image description here

Теперь моя проблема в том, что treeView1.Nodes.Add(tn); создает пустой узел, но мое требование похоже на Code A's тип изображения (без пустого узла).Если вам нужна какая-либо другая информация, пожалуйста, дайте мне знать. UPDATE На самом деле в моем коде есть функция, которая возвращает TreeNode, и мне нужно добавить этот узел в TreeView элемент управления без первого пустого уровня.

Ответы [ 3 ]

5 голосов
/ 09 декабря 2011

Этот код:

TreeNode tn = new TreeNode();

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

Если вашей целью является код в «A», почему вы пишете «B»?

Редактировать : ответ на ваш обновленный вопрос

У вас есть функция, возвращающая пустой корневой узел дерева, в котором содержатся нужные вам дочерние элементы. Итак, что-то вроде этого в порядке.

foreach (var node in returnedNode.Nodes)
{
    treeView1.Nodes.Add(node);
}

OR

treeView1.Nodes.AddRange(returnedNode.Nodes.Cast<TreeNode>().ToArray());
2 голосов
/ 09 декабря 2011

Имя корневого узла пусто, поскольку вы использовали конструктор по умолчанию для класса TreeNode .

Попробуйте указать имя для узла tn, используя TreeNode (текст строки) конструктор

    // specify name of the root node
    TreeNode tn = new TreeNode("Root Node Name");
    tn.Nodes.Add("Node A");
    tn.Nodes.Add("Node B");
    treeView1.Nodes.Add(tn);

ОБНОВЛЕНИЕ : поскольку вопрос был обновлен

Просто установите Text свойство для узла, возвращаемого функцией:

TreeNode treeNode = YourMethodWhichCreatesTreeNode();
treeNode.Text = "Root Node Name";
treeView.Nodes.Add(treeNode);
2 голосов
/ 09 декабря 2011
TreeNode t1 = new TreeNode( "Node A" );         
treeView1.Nodes.Add( t1 );
TreeNode t2 = new TreeNode( "Node B" );         
treeView1.Nodes.Add( t2 );

Вы должны добавить узлы непосредственно под treeView1, а не под дочерним узлом, как во втором фрагменте.

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