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

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

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

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

有个treeView.Nodes[0].Nodes[0].Nodes[0]......可以按顺序获取特定子节点,但是这样该取多少次呢?
我C#的确是刚接触,不知道问题陈述的清不清楚。求教各位前辈,不知道有什么好思路?谢谢!
...全文
3705 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
gods_kiss 2013-09-12
  • 打赏
  • 举报
回复
我也是新手,可以交流下。。
lhw7791086 2013-03-27
  • 打赏
  • 举报
回复
引用 1 楼 caozhy 的回复:
string[] s = new string[] { "aaa", "bbb", "ccc", "ddd", "eee" }; treeView1.Nodes.Add(s[0]); TreeNode tn = treeView1.Nodes[0]; foreach (var item in s.Skip(1)) { tn.Nodes.Add(item)……
感谢,这个问题解决了,请看具体问题 http://bbs.csdn.net/topics/390404551?page=1#post-394038186
lhw7791086 2013-03-27
  • 打赏
  • 举报
回复
引用 3 楼 Mackz 的回复:
还可以简化C# code?123456string[] s = new string[] { "aaa", "bbb", "ccc", "ddd", "eee" };TreeNodeCollection nodes = treeView1.Nodes;foreach (var item in s){ nodes = nodes.Add(item).Nodes;}我是……
感谢,这个问题解决了,请看具体问题http://bbs.csdn.net/topics/390404551?page=1#post-394038186
lhw7791086 2013-03-27
  • 打赏
  • 举报
回复
引用 4 楼 h_gxi 的回复:
我也是新人,还没学到这呢。不知道能不能帮上你! 我是这么想的,VS编译器上拖TreeView控件后,属性里可以手动添加Nodes集合。 我先按你的要求,添加了3个子节点。然后看下Designer.cs里编译器为我们自动添加的代码。 C# code?123456789101112131415161718192021222324252627282930313233343……
感谢回复了这么多,让我慢慢消化消化,谢谢!
wirner 2013-03-26
  • 打赏
  • 举报
回复
h_gxi 2013-03-26
  • 打赏
  • 举报
回复
我也是新人,还没学到这呢。不知道能不能帮上你! 我是这么想的,VS编译器上拖TreeView控件后,属性里可以手动添加Nodes集合。 我先按你的要求,添加了3个子节点。然后看下Designer.cs里编译器为我们自动添加的代码。
/// <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;
优化下代码:
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循环吧。初学者代码一大坨,呵呵!
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] });
        }
菜牛 2013-03-26
  • 打赏
  • 举报
回复
还可以简化
string[] s = new string[] { "aaa", "bbb", "ccc", "ddd", "eee" };
TreeNodeCollection nodes = treeView1.Nodes;
foreach (var item in s)
{
    nodes = nodes.Add(item).Nodes;
}
我是有点强迫症了。
菜牛 2013-03-26
  • 打赏
  • 举报
回复
string[] s = new string[] { "aaa", "bbb", "ccc", "ddd", "eee" };
treeView1.Nodes.Add(s[0]);
TreeNode tn = treeView1.Nodes[0];
foreach (var item in s.Skip(1))
{
    tn = tn.Nodes.Add(item);
}
偷个懒改一下,错了也是1楼的。意思是Nodes.Add返回的就是添加的节点。
threenewbee 2013-03-26
  • 打赏
  • 举报
回复
string[] s = new string[] { "aaa", "bbb", "ccc", "ddd", "eee" }; treeView1.Nodes.Add(s[0]); TreeNode tn = treeView1.Nodes[0]; foreach (var item in s.Skip(1)) { tn.Nodes.Add(item); tn = tn.Nodes[0]; }

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧