将节点添加到Treeview控件

时间:2012-08-21 19:05:38

标签: c# .net

我正在玩树视图控件并遇到了一个简单的问题。我想将它设置为可被10整除的所有内容作为父节点,然后下面的数字应该是子节点,直到它达到另一个可分数10而没有余数。所以我的方法看起来像这样,需要帮助!感谢。

        private  void countDown(int num)
    {
        tv_NumList.Nodes.Add("topNode");
        while (num != 0)
        {
            if (num % 10 == 0)
            {
                tv_NumList.Nodes.Add(num.ToString());

                int counter = 9;
                while (counter != 0)
                {
                    tv_NumList.Nodes[1].Nodes.Add(num.ToString());
                    counter--;
                }
                num--;
            }

        }
    }

2 个答案:

答案 0 :(得分:0)

也许是我,但我看不出你在想什么......假设你的意思是这个(给定15)

root 
  |--15
  |--14
  |--13
  |--12
  |--11
 [+]-10


root 
  |--15
  |--14
  |--13
  |--12
  |--11
 [-]-10
     |-- 9
     |-- 8
     |-- 7
     |-- 6
     |-- 5
     |-- 4
     |-- 3
     |-- 2
     |-- 1

以下(未经测试)会给你这个结果。

// changed to take TV as a parameter.
private void countDown(TreeView tv, int num)
{
    // Create and remember your root node.
    var root = new TreeNode("root");
    tv.Nodes.Add(root);

    // This to remember the last 'grouping node' created.  Start with
    // the root node to deal with starting values not divisible by 10.
    TreeNode group = root;

    for ( int i=num; i>0; i--)
    {
        // Is it divisble by 10, if so, start a new group 
        if (num % 10 == 0)
        {
            group = new TreeNode(i.ToString());
            root.Nodes.Add(group);
        }
        else
        {  
            // Not divisible, so add to last group (or root if no 
            // group yet started) 
            group.Nodes.Add(i.ToString());
        }
    }
}

答案 1 :(得分:0)

因此,如果我理解正确,您希望最终结果如下:

-- ROOT NODE (Divisible by ten)
   +-- 30
   +-- 20
   +-- 10
-- ROOT NODE (everything else)
   +-- 29
   +-- 28
   +-- ...etc...

如果是这样的话,那么:

Int32 input = 30;
for (Int32 index = input; index == 0; index--) {
  treeview1.Nodes[0 == index % 10 ? 0 : 1].Nodes.Add(index.ToString());
}