分享

刚学习C#:如何动态添加TreeView子节点,有点伸手党了。。。

 牛人的尾巴 2015-10-26
问题:现有一有序的string类型数据,例如 aaa bbb ccc ddd eee......
某一treeview已存在根节点,需要将上面的aaa bbb ccc ddd eee......按顺序添加为子节点(不是同一级的,bbb是aaa的子节点、ccc是bbb的子节点,以此类推)

我试了试:string数据的个数是可以确定的,添加采用:
C# code?
1
2
3
TreeNode tn = new TreeNode();
tn.Text = "string的名字";
根节点.Nodes.Add(tn); //可实现添加第二级

但是再往后就不知道如何添加后面几级的子节点了,因为不知道如何获取前一级的子节点,也就是XXX.Nodes.Add(新添加的子节点) 这里的XXX不知道如何表示?而且如果采用循环的话,每次都要用
C# code?
1
TreeNode xx = new TreeNode() //创建新的TreeNode,这样会重复吧。。。

有个treeView.Nodes[0].Nodes[0].Nodes[0]......可以按顺序获取特定子节点,但是这样该取多少次呢?
我C#的确是刚接触,不知道问题陈述的清不清楚。求教各位前辈,不知道有什么好思路?谢谢!



#4 得分:0 回复于: 2013-03-26 22:53:43
我也是新人,还没学到这呢。不知道能不能帮上你!
我是这么想的,VS编译器上拖TreeView控件后,属性里可以手动添加Nodes集合。
我先按你的要求,添加了3个子节点。然后看下Designer.cs里编译器为我们自动添加的代码。
C# code?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
/// <summary>
        /// 设计器支持所需的方法 - 不要
        /// 使用代码编辑器修改此方法的内容。
        /// </summary>
        private void InitializeComponent()
        {
            System.Windows.Forms.TreeNode treeNode1 = new System.Windows.Forms.TreeNode("节点2");
            System.Windows.Forms.TreeNode treeNode2 = new System.Windows.Forms.TreeNode("节点1"new System.Windows.Forms.TreeNode[] {
            treeNode1});
            System.Windows.Forms.TreeNode treeNode3 = new System.Windows.Forms.TreeNode("节点0"new System.Windows.Forms.TreeNode[] {
            treeNode2});
            this.panel1 = new System.Windows.Forms.Panel();
            this.treeView1 = new System.Windows.Forms.TreeView();
            this.panel1.SuspendLayout();
            this.SuspendLayout();
            // 
            // panel1
            // 
            this.panel1.Controls.Add(this.treeView1);
            this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;
            this.panel1.Location = new System.Drawing.Point(0, 0);
            this.panel1.Name = "panel1";
            this.panel1.Size = new System.Drawing.Size(282, 255);
            this.panel1.TabIndex = 0;
            // 
            // treeView1
            // 
            this.treeView1.Location = new System.Drawing.Point(12, 12);
            this.treeView1.Name = "treeView1";
            treeNode1.Name = "节点2";
            treeNode1.Text = "节点2";
            treeNode2.Name = "节点1";
            treeNode2.Text = "节点1";
            treeNode3.Name = "节点0";
            treeNode3.Text = "节点0";
            this.treeView1.Nodes.AddRange(new System.Windows.Forms.TreeNode[] {
            treeNode3});
            this.treeView1.Size = new System.Drawing.Size(258, 231);
            this.treeView1.TabIndex = 0;

优化下代码:
C# code?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
TreeNode treeNode1 = new TreeNode("节点2");
            TreeNode treeNode2 = new TreeNode("节点1"new TreeNode[] {treeNode1});
            TreeNode treeNode3 = new TreeNode("节点0"new TreeNode[] {treeNode2});
            TreeView treeView1 = new TreeView();
            treeView1.Location = new System.Drawing.Point(12, 12);
            treeView1.Name = "treeView1";
            treeNode1.Name = "节点2";
            treeNode1.Text = "节点2";
            treeNode2.Name = "节点1";
            treeNode2.Text = "节点1";
            treeNode3.Name = "节点0";
            treeNode3.Text = "节点0";
            treeView1.Nodes.AddRange(new TreeNode[] {treeNode3});
            treeView1.Size = new System.Drawing.Size(258, 231);
            treeView1.Parent = panel1;


递归不太熟,那就for循环吧。初学者代码一大坨,呵呵!
C# code?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
private void Form1_Load(object sender, EventArgs e)
        {
            string[] strs = { "aaa""bbb""ccc""ddd""fff" };
            TreeView treeView1 = new TreeView();
            treeView1.Name = "treeView1";
            treeView1.Location = new System.Drawing.Point(12, 12);
            treeView1.Size = new System.Drawing.Size(258, 231);
            treeView1.Parent = panel1;
            TreeNode[] treenodes = new TreeNode[strs.Length];
            treenodes[0] = new TreeNode();     
            treenodes[0].Name = strs[strs.Length - 1];
            treenodes[0].Text = strs[strs.Length - 1];
            for (int i=1; i<strs.Length; i++)
            {
                treenodes[i] = new TreeNode();
                treenodes[i].Name = strs[strs.Length - i - 1];
                treenodes[i].Text = strs[strs.Length - i - 1];
                treenodes[i].Nodes.Add(treenodes[i - 1]);
            }
            treeView1.Nodes.AddRange(new TreeNode[] { treenodes[strs.Length - 1] });

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多