winform treeview里面的复选框 获取值treeview 里面分别有3个父级,里面还有几个子级
需要怎么获取呢?
求答案,,,求代码

解决方案 »

  1.   


            private void GetTreeViewNode(TreeNode node1)
            {
                if (node1.Nodes != null)
                {
                    foreach (TreeNode node2 in node1.Nodes)
                    {
                        GetTreeViewNode(node2);
                    }
                }
                else
                {
                    if (node1.Checked)//选中的时候就。。
                    {
                        //do something
                    }
                }
            }
      

  2.   

    AfterCheck事件             private void treeView1_AfterCheck(object sender, TreeViewEventArgs e)
            {
                SetNodeCheckState((TreeNode)e.Node);
    }  private void SetNodeCheckState(TreeNode parentNode)
            {
                foreach (TreeNode node in parentNode.Nodes)
                {
                    if (parentNode.Checked == true)
                    {
                        //node.Checked = true;
                        Console.WriteLine(node.Name);//输出选中的树节点,包括子节点。
                    }
                    //else
                       // node.Checked = false;// 此处如果选中父节点,同时选中子节点可去掉注释。
                    if(node.Nodes.Count>0)
                     SetNodeCheckState(node);
                }
            }
      

  3.   

            private void SetNodeCheckState(TreeNode parentNode)
            {
                if (parentNode.Nodes.Count > 1)
                {
                    foreach (TreeNode node in parentNode.Nodes)
                    {
                        if (parentNode.Checked == true)
                        {
                            node.Checked = true;
                            Console.WriteLine(node.Text);
                        }
                        else
                            node.Checked = false;
                        if (node.Nodes.Count > 0)
                            SetNodeCheckState(node);
                    }
                }
                else
                {
                    Console.WriteLine(parentNode.Text);
                }
            } 方法修改下,这样就可以显示没有子节点的信息。
      

  4.   

    void saa(TreeNode tn)
            {
                if (tn.Checked && tn.Tag!=null)
                {
                    int id = Convert.ToInt32(tn.Tag);
                    //MessageBox.Show(id.ToString());
                    txt.Text += id.ToString() + ",";
                }
                if (tn.Nodes.Count>0)
                {
                    foreach (TreeNode tn1 in tn.Nodes)
                    {
                        saa(tn1);
                    }
                }
            }只能获取第一个,第二个后都不能