我的treeview有三层如:
中国
   广东
      广州
      深圳
   安徽
      合肥
      .......
我选项中广东时,下面的广州,深圳也选上,选中国时都选上,大致是这样的.然后得到选中的值,这个过程怎么实现,要源码.谢谢.,

解决方案 »

  1.   

    private void treeView1_AfterCheck(object sender, System.Windows.Forms.TreeViewEventArgs e)
    {
    TreeNode n =  e.Node;
    CheckSubNode(n.Nodes, true); }//用这个
    void CheckSubNode(TreeNodeCollection nodes, bool isChecked)
    {
    foreach(TreeNode node in nodes)
    {
    node.Checked = isChecked;

    if (node.Nodes.Count>0)
    {
    CheckSubNode(node.Nodes, isChecked);
    }
    }
    }
      

  2.   

    private void treeView1_AfterCheck(object sender, System.Windows.Forms.TreeViewEventArgs e)
    {
    CheckSubNode(e.Node.Nodes, e.Node.Checked);
    }
      

  3.   

    偶还没明白你用的哪个treeview哩!BS还是CS那个 方法不一样地
      

  4.   

    鼎鼎强,上面已写了是winform.c/s 的.我的QQ是:408954312.高手们在讲解问题的时候能不能留下高人们的QQ或MSN号.谢谢了.还没有思路啊.等待....
      

  5.   

    private void tvList_BeforeSelect
                      (object sender,System.Windows.Forms.TreeViewCancelEventArgs e)
    {
    txtShow.Text=e.Node.Text;
    }
    加一句代码就行了 txtShow.Text=e.Node.Text;
    放到 treeview1_BeforeSelect 这个事件里
      

  6.   

    刚才偶得帖子没说清楚,txtShow是显示选中节点值得文本框,tvlist是treeview控件msn:[email protected]
      

  7.   

    breeze_82(一天学一点) :txtShow哪里来的
      

  8.   

    weisunding(鼎鼎) ,你号是多少,我还有不明白的地方,想当面请教.谢谢.
      

  9.   

    鼎鼎的代码并不全。他只是影响了子节点,但父节点并没有。
    bool blJmp = false;//标志
    private void treeView1_AfterCheck(object sender, System.Windows.Forms.TreeViewEventArgs e)
    {
        if(this.blJmp)return;
    foreach(TreeNode tn in e.Node.Nodes)//影响子节点
    {
    tn.Checked = e.Node.Checked;
    }
             this.blJmp = true;
    this.SetCheck(e.Node);//处理父节点
             this.blJmp = false;
    }
    private void SetCheck(TreeNode n)
    {
    if(n.Checked)//如果当前节点选中,则父节点也要选取中
    {
    this.parentNode(n,n.Checked);
    }
    else//如果当前节点没有选中,且同级节点中都没有选中,则父节点也不要选中
    {
    if(n.Parent != null)
    {
    //如果同一级中没有被选中,则其父级也同时设为不选中,在这种情况下,递归父节点
    if(this.nextNotCheck(n.Parent.FirstNode))
    {
    n.Parent.Checked = false;
    this.SetCheck(n.Parent);
    }
    }
    }
    }
    private void parentNode(TreeNode n,bool check)
    {
    if(n.Parent != null)
    {
    n.Parent.Checked = check;
    this.parentNode(n.Parent,check);
    }
    }
    //下一个节点是不是没有选中
    private bool nextNotCheck(TreeNode n)
    {
    if(n.Checked) return false;
    if(n.NextNode == null) return true;
    return this.nextNotCheck(n.NextNode);
    }
      

  10.   

    n.Parent.Checked中,n.Parent没有Checked属性.