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);    }}//所有节点的个数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);    }}顺序值是什么意思?
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(); }
哈哈,不行就自己写个判断,字数达到多少时,给其设置个样式,指定字体大小!
TreeNode 有个Tag属性 你添加节点的时候 你可以在Text属性中设置 显示的值 在tag中保存 顺序值
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就是顺序。