为什么TreeView控件创建空白节点?

时间:2011-12-09 18:20:42

标签: c# .net winforms treeview

首先看下面的代码和图片。

代码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图像类型(没有空白节点)。如果您需要任何其他信息,请告诉我。
更新
实际上,我的代码中的一个函数返回TreeNode,我必须将此节点添加到TreeView控件,而不是第一个空白级别。

3 个答案:

答案 0 :(得分:5)

此代码:

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());

答案 1 :(得分:2)

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

您必须直接在treeView1下添加节点,而不是在第二个代码段中添加节点。

答案 2 :(得分:2)

根节点的名称为空,因为您已使用default constructor of the TreeNode class

尝试使用TreeNode(string text) constructor

指定tn节点的名称
    // 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);