首页 新闻 会员 周边 捐助

c#winform中如何获取treeview的所有项数目。在线等,满意给高分。

0
悬赏园豆:100 [已解决问题] 解决于 2013-12-13 15:48

c#winform中如何获取treeview中所有项的数目,包括子节点。并且如何获取当前点击项的顺序值(从上往下的顺序,包括子节点)?

希望附上代码

问题补充:

  答案已经有了

 

//所有节点的个数
int count = treeView1.GetNodeCount(true);
//当前节点序号
void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
    int sum = getIndex(e.Node, 0);
    MessageBox.Show(sum.ToString());
}
 
int getIndex(TreeNode node, int sum)
{
    if (node.PrevNode == null)
    {
        if (node.Parent == null)
        {
            return sum + 1;
        }
        else
        {
            return getIndex(node.Parent, sum + 1);
        }
    }
    else
    {
        sum += node.PrevNode.GetNodeCount(true) + 1;
        return getIndex(node.PrevNode, sum);
    }
}
一叶凡尘的主页 一叶凡尘 | 初学一级 | 园豆:15
提问于:2013-12-13 10:20
< >
分享
最佳答案
0
//所有节点的个数
int count = treeView1.GetNodeCount(true);
//当前节点序号
void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
    int sum = getIndex(e.Node, 0);
    MessageBox.Show(sum.ToString());
}
 
int getIndex(TreeNode node, int sum)
{
    if (node.PrevNode == null)
    {
        if (node.Parent == null)
        {
            return sum + 1;
        }
        else
        {
            return getIndex(node.Parent, sum + 1);
        }
    }
    else
    {
        sum += node.PrevNode.GetNodeCount(true) + 1;
        return getIndex(node.PrevNode, sum);
    }
}
一叶凡尘 | 初学一级 |园豆:15 | 2013-12-13 15:47
其他回答(4)
0

顺序值是什么意思?

 private int count = 0;

 private void ViewTree(TreeNode node)
{
    Console.WriteLine(node.Text);
    this.count++;
    foreach (TreeNode item in node.Nodes)
    {
        ViewTree(item);
    }
}

main()
{
             foreach (TreeNode item in this.treeView1.Nodes)
            {
                this.ViewTree(item);                
            }
            Console.WriteLine(count);
            Console.WriteLine();
}
收获园豆:25
会长 | 园豆:12463 (专家六级) | 2013-12-13 11:38
0

哈哈,不行就自己写个判断,字数达到多少时,给其设置个样式,指定字体大小!

收获园豆:25
jerry-Tom | 园豆:4077 (老鸟四级) | 2013-12-13 13:26
0

TreeNode 有个Tag属性 你添加节点的时候 你可以在Text属性中设置 显示的值 在tag中保存 顺序值

收获园豆:25
wolfy | 园豆:2636 (老鸟四级) | 2013-12-13 14:16
0
private int GetItemCount()
        {
            int i = 1;
            var dic = new Dictionary<int, string>();
            foreach (TreeNode node in treeView1.Nodes)
            {
                Do(node, ref i, dic);
            }
            return dic.Count;
        }

        private void Do(TreeNode root, ref int index, Dictionary<int, string> dic)
        {
            dic.Add(index, root.Text);
            index++;
            foreach (TreeNode node in root.Nodes)
            {
                Do(node, ref index, dic);
            }
        }

Dictionary的key就是顺序。

收获园豆:25
幻天芒 | 园豆:37207 (高人七级) | 2013-12-13 14:24
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册