再问treeview(总共150分)

abc3000 2006-08-08 12:06:27
另外100分地址:
http://community.csdn.net/Expert/topic/4934/4934190.xml?temp=.9354059




TreeNode[] treeNodeDayType = null;
TreeNode[] treeNodeCarType = null;


先给treeNodeDayType赋值
treeNodeDayType = new TreeNode[dt.Length];
//赋值省略....



treeNodeCarType = new TreeNode[ct.Length];
for (int i = 0; i < ct.Length; i++)
{
treeNodeCarType[i] = new TreeNode(ct[i].value, treeNodeDayType);
}



也就是每个CarType结点下面都有重复的DayType的内容.
最后this.treeview1.Nodes.AddRange(treeNodeCarType);

但是显示出来的东西和我想的不一样, 只有最后个CarType结点下才有内容,而且是重复i遍的内容,其他CarType结点下为空.

怎么回事?
...全文
218 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
abc3000 2006-08-08
  • 打赏
  • 举报
回复
up
abc3000 2006-08-08
  • 打赏
  • 举报
回复
故弄悬虚?
zhgroup 2006-08-08
  • 打赏
  • 举报
回复
深拷贝
andylauhai 2006-08-08
  • 打赏
  • 举报
回复
已经实现treeview与数据库的绑定了
oolongTea 2006-08-08
  • 打赏
  • 举报
回复
学习
Knight94 2006-08-08
  • 打赏
  • 举报
回复
正确的做法应该如下:
private void AddChild( TreeNode tnParent, TreeNode[] tnChildren )
{
for( int i = 0; i < tnChildren.Length; i++ )
{
TreeNode tnClone = tnChildren[i].Clone() as TreeNode;
tnParent.Nodes.Add( tnClone );
}
}

//Add car nodes
for (int i = 0; i < 2; i++)
{
treeNodeCarType[i] = new TreeNode( i.ToString());
AddChild( treeNodeCarType[i], treeNodeDayType );
}
Knight94 2006-08-08
  • 打赏
  • 举报
回复
一个节点或者节点集合只能被加载一次,所以像
treeNodeCarType[i] = new TreeNode(ct[i].value, treeNodeDayType);
这样的做法是错误。

你需要对treeNodeDayType中的每个节点要产生copy,然后进行加载。

110,568

社区成员

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

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

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