treeview开启了多选框,怎么得到所有所选节点上文字呢?

解决方案 »

  1.   

    递归遍历...或者你也可以 AfterCheck 事件中把数据加入一个集合...
      

  2.   

    private void button1_Click(object sender, EventArgs e)
            {
                            //CallRecursive(treeView1);
            }
            private void PrintRecursive(TreeNode treeNode)
            {
                // Print the node.
                System.Diagnostics.Debug.WriteLine(treeNode.Text);
                MessageBox.Show(treeNode.Text);
                // Print each node recursively.
                foreach (TreeNode tn in treeNode.Nodes)
                {
                    if (tn.Checked==true) 
                    PrintRecursive(tn);
                }
            }        // Call the procedure using the TreeView.
            private void CallRecursive(TreeView treeView)
            {
                // Print each node recursively.
                TreeNodeCollection nodes = treeView.Nodes;
                foreach (TreeNode n in nodes)
                {
                    PrintRecursive(n);
                }
            }
      

  3.   

    dinglj1760(阿拉丁) 的方法好像有BUG,不能正确显示选中的节点!
      

  4.   

    private void PrintRecursive(TreeNode treeNode)
    {
                // Print the node.
                System.Diagnostics.Debug.WriteLine(treeNode.Text);
                MessageBox.Show(treeNode.Text);
                // Print each node recursively.
                foreach (TreeNode tn in treeNode.Nodes)
                {
                    if (tn.Checked==true) 
                    {
                        ary.add(tn.Tag);//加到集合中
                    }if(tn.Nodes.Count > 0)
    {
                    PrintRecursive(tn);
    }
                }
            }
      

  5.   

    看我这个!
    ArrayList list =new ArrayList();
    private void getNode()
    {
        foreach(TreeNode node in TreeView1.Nodes)
        {
            if(node.checked)
            {
                list.Add(node);
            }
            GetCheckNode(node);
        }
    }private void GetCheckNode(TreeNode node)
    {
        foreach(TreeNode n in node.Nodes)
        {
            if(n.checked)
            {
                  list.Add(n)
            }
            GetCheckNode(n);
         }
    }在Button事件里调用
    getNode();list集合里的就是所有被checked的节点
      

  6.   

    maxianjin(pony) 的方法运行时显示【错误 当前上下文中不存在名称“ary”】
      

  7.   

    xcq_summer(秋子) ,你的也有问题!
      

  8.   

    dinglj1760(阿拉丁) 的方法不能正确显示第三级节点。下面是我修改后的代码,注释部分是原来代码 private void PrintRecursive(TreeNode treeNode)
            {
                // Print the node.
                //System.Diagnostics.Debug.WriteLine(treeNode.Text);
                
                if (treeNode.Checked == true)
                {
                    MessageBox.Show(treeNode.Name+"-"+treeNode.Text);               
                }
                // Print each node recursively.
                foreach (TreeNode tn in treeNode.Nodes)
                {
                    //if (tn.Checked == true)
                    //{
                        //MessageBox.Show(treeNode.Text);
                        PrintRecursive(tn);
                    //}            }
                
            }        // Call the procedure using the TreeView.
            private void CallRecursive(TreeView treeView)
            {
                // Print each node recursively.
                TreeNodeCollection nodes = treeView.Nodes;
                //MessageBox.Show(nodes.Count.ToString());
                foreach (TreeNode n in nodes)
                {
                    PrintRecursive(n);
                }
            }