C# treeview 动态添加根节点

wangyu071003 2013-03-12 03:01:12
我想做一个treeview,把数组的数据导入为treeview,

我想把日期作为根节点,
但是随着日期的延续,我的根节点是怎么样更新添加呢?
主要是我要做的根节点完全就不知道有多少个,
这个需要怎么样添加呢?
...全文
903 22 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
你每次添加的时候用treeview.Nodes.ContainsKey(key)方法判断下。 要是存在就用finde方法取得已经加进去的node,然后添加子node值就是你的value
sbicfwxf9 2013-03-12
  • 打赏
  • 举报
回复
string value = data[1];
sbicfwxf9 2013-03-12
  • 打赏
  • 举报
回复
  private void button1_Click(object sender, EventArgs e)
        {
            string[][] strArr = new string[8][];
            strArr[0] = new string[] { "2013/3/12", "a" };
            strArr[1] = new string[] { "2013/3/12", "b" };
            strArr[2] = new string[] { "2013/3/13", "c" };
            strArr[3] = new string[] { "2013/3/13", "d" };
            strArr[4] = new string[] { "2013/3/13", "e" };
            strArr[5] = new string[] { "2013/3/14", "f" };
            strArr[6] = new string[] { "2013/3/14", "g" };
            strArr[7] = new string[] { "2013/3/14", "h" };
            foreach (var data in strArr)
            {
                string date = data[0];
                string value = data[0];
                TreeNode datenode = new TreeNode(date);
                datenode.Name = date;
                TreeNode valuenode = new TreeNode(value);
                if (!treeView1.Nodes.ContainsKey(date))
                {
                    treeView1.Nodes.Add(datenode);
                }
                else
                {
                    treeView1.Nodes[date].Nodes.Add(valuenode);
                }
            }
        }
wangyu071003 2013-03-12
  • 打赏
  • 举报
回复
引用 17 楼 rinall 的回复:
C# code?1234567891011121314string str = ""; for (int i = 0; i < s.Length; i++) { if (str != s[i, 0]) { str = s[i, 0……
谢谢!!我试试
rinall 2013-03-12
  • 打赏
  • 举报
回复

string str = "";

            for (int i = 0; i < s.Length; i++)
            {
                if (str != s[i, 0])
                {
                    str = s[i, 0];
                    tv.Nodes.Add(new TreeNode(s[i, 1]));
                }
                else
                {
                    tv.Nodes[str].Nodes.Add(new TreeNode(s[i, 1]));
                }
            }
wangyu071003 2013-03-12
  • 打赏
  • 举报
回复
我的思路是: 先添加一个根节点,及子节点 然后比较下一个,如果和上一个日期一致,则添加子节点 如果与上一个日期不一致,则添加根节点,同时添加子节点 当添加了新的根节点后,继续下一项比较,如果和上一个日期一致,则添加子节点, 否则添加根节点, 以此类推,,,,, 是不是代码写的不对呢?
wangyu071003 2013-03-12
  • 打赏
  • 举报
回复
引用 14 楼 rinall 的回复:
引用 13 楼 wangyu071003 的回复:引用 9 楼 sbicfwxf9 的回复:个人认为,这是逻辑问题,不是代码实现的技术问题。 嗯,我也是这么认为的,可是调了很长时间,就是出错。。。。。 你的逻辑好乱 那个数组是怎么回事 什么结构
我就是想把数组转成treeview, 2013/3/12 asd 2013/3/12 sdf 2013/3/12 zxc 2013/3/13 qwe 2013/3/13 ert 大概就是上面的格式,时间为根节点,右边字母为子节点, 最后treeview节点完全展开为: 2013/3/12 ---asd ---sdf ---zxc 2013/3/13 ---qwe ---ert
rinall 2013-03-12
  • 打赏
  • 举报
回复
引用 13 楼 wangyu071003 的回复:
引用 9 楼 sbicfwxf9 的回复:个人认为,这是逻辑问题,不是代码实现的技术问题。 嗯,我也是这么认为的,可是调了很长时间,就是出错。。。。。
你的逻辑好乱 那个数组是怎么回事 什么结构
wangyu071003 2013-03-12
  • 打赏
  • 举报
回复
引用 9 楼 sbicfwxf9 的回复:
个人认为,这是逻辑问题,不是代码实现的技术问题。
嗯,我也是这么认为的,可是调了很长时间,就是出错。。。。。
wangyu071003 2013-03-12
  • 打赏
  • 举报
回复
             int n1=0;
            treeView1.Nodes.Add(new TreeNode(s[0, 0]));
            for (int i = 0; i < m; i++)
            {
                if (s[i, 0] == s[0, 0])
                {
                    treeView1.Nodes[n1].Nodes.Add( new TreeNode(s[i, 1]);
                }
                else if (i > 0 && (s[i, 0] != s[i - 1, 0]))
                {
                    n1++;
                    treeView1.Nodes.Add( new TreeNode(s[i, 0]));
                    treeView1.Nodes[n1].Nodes.Add(new TreeNode(s[i, 1]);
                }
                else if(s[i, 0] == s[i - 1, 0])
                {
                    treeView1.Nodes[n1].Nodes.Add(new TreeNode(s[i, 1] );
                }
            }
这是代码,请各位大神批吧,一个数组,第一列为日期,以第一列为根节点,就是出错, 我是看不出来问题了,现在眼睛都花了
  • 打赏
  • 举报
回复
这玩意你用递归判断才行吧。
  • 打赏
  • 举报
回复
引用 9 楼 sbicfwxf9 的回复:
个人认为,这是逻辑问题,不是代码实现的技术问题。
sbicfwxf9 2013-03-12
  • 打赏
  • 举报
回复
个人认为,这是逻辑问题,不是代码实现的技术问题。
wangyu071003 2013-03-12
  • 打赏
  • 举报
回复
引用 7 楼 lye2000000_super 的回复:
加的时候判断下不就得了。。。
我判断了,第一个根节点还没问题,可是到了第二个就出错了,就变成每次都添加根节点了
  • 打赏
  • 举报
回复
加的时候判断下不就得了。。。
wangyu071003 2013-03-12
  • 打赏
  • 举报
回复
引用 5 楼 rinall 的回复:
引用 2 楼 wangyu071003 的回复:引用 1 楼 rinall 的回复:treeview.nodes.add(new Nodes(datetime.now.tostring("yyyy-MM-dd"))); 这样会不会重复建立根节点呢? 如何分类 是你自己的问题
这话说的真在理
rinall 2013-03-12
  • 打赏
  • 举报
回复
引用 2 楼 wangyu071003 的回复:
引用 1 楼 rinall 的回复:treeview.nodes.add(new Nodes(datetime.now.tostring("yyyy-MM-dd"))); 这样会不会重复建立根节点呢?
如何分类 是你自己的问题
rinall 2013-03-12
  • 打赏
  • 举报
回复
引用 2 楼 wangyu071003 的回复:
引用 1 楼 rinall 的回复:treeview.nodes.add(new Nodes(datetime.now.tostring("yyyy-MM-dd"))); 这样会不会重复建立根节点呢?
根据日期分类自己加呗
gxingmin 2013-03-12
  • 打赏
  • 举报
回复
同一天的作为一个根节点,你在加载根节点前查找一下有没有改日期的节点了
加载更多回复(2)

111,092

社区成员

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

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

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