【问题标题】:trouble with adding child node C#添加子节点C#的麻烦
【发布时间】:2015-12-09 11:58:07
【问题描述】:

我正在向树视图中的当前父节点添加一个子节点。但我的问题是,它将新节点添加到当前父节点的末尾,而不是添加到 if 为真的位置。

这是我的代码:

for (int i = 0; i < num; i++)
{
   if (action_type1 != action_type2)
   {
      TreeNode new_node = = treeView1.Nodes[0].Nodes[position];
      string new_name = "";
      new_node.Nodes.Add(new_name);
   }
}

当然,numpositionaction_type1action_type2 在我的代码中是变量,对于任何 for 循环,它们都是不同的整数和字符串。 action_type1 是 treeView 的节点名称,action_type2 是固定字符串。 if 如果存在与给定字符串相等的节点,则循环查找整个树,然后离开该节点,否则在树中插入一个空节点,然后递归执行。 但为了简单起见,让我们有:

int num = 2;
int position = 4;
string action_type1;
string action_type2;

【问题讨论】:

  • 这篇文章有问题:foreach (TreeNode Node in nodes) { new_node = Node.Nodes[position]; }
  • num = 0 不会一次运行循环。有很多缺失,这使得它比我想象的更混乱
  • @Saber - foreach 怎么样?你想在那里发生什么?因为它现在是无意义的。
  • 你应该考虑使用TreeNodeCollection.Insert Method (Int32, TreeNode)而不是循环遍历nodes...
  • @Alex 你是对的。我是用另一种方式写的。因为通过treeView1.Nodes[0].Nodes[position] 我可以访问当前的父级。

标签: c# .net treeview nodes


【解决方案1】:

这就是你想要的?

for (int i = 0; i < num; i++)
{
   if (action_type1 != action_type2)
   {
      treeView1.Nodes[i].Nodes.Insert(position - 1, virtual_name);
   }
}

【讨论】:

  • 我觉得Insert(position - 1, new_node)应该改成Insert(position - 1, "")。因为第二个参数应该是一个字符串。对吗?
猜你喜欢
  • 2010-11-20
  • 2016-07-16
  • 1970-01-01
  • 2015-09-05
  • 1970-01-01
  • 2023-03-23
  • 1970-01-01
  • 2011-05-24
  • 2023-02-06
相关资源
最近更新 更多