呵呵,不是
主要是指,当树节点中有checkbox 时,全选,部分选中(子节点中存在没有选中状态),不选择,这三种情况,
这里主要是要实现,当子节点中有没有被选中的情况,选择框变成灰色背景,很多软件里的树选控件都有这个功能,这里大家讨论一下c#中怎么实现呀

解决方案 »

  1.   

    我有段代码,以前都是自己写的,想要的话给我发个短消息,然后我给你发到E-MAIL
    分要给我啊!:)
      

  2.   

    自己写呗,用递归调用。加上几个TreeNode集合就可以搞定了!
      

  3.   

    树有个属性,选中它,就可以给每个节点前面加上checkbox。
    至于说变成灰的,倒是不知道,c#可能没有做进去
    用递归来实现
      

  4.   

    看看我的一小段程序也许对你有用的:
    (说明:
        DrugClass是我自己定义的一个类,里面有很多的属性
        new ManageMedItem().GetDrugClassTree() 是我程序里的一个方法,返回一个          
        DrugClass 类的集合,同时自动加载数据到树当中
    )
    private DrugClass m_objDrugClass=new DrugClass();//实例一个自定义的类//由于修改过了数据库,应该重新读取数据库中的数据来加载TreeView
    private void ....(... , ...)
    {
    tv.Nodes.Clear();
    tv.Nodes.Add(new ManageMedItem().GetDrugClassTree());
    foreach(TreeNode node in tv.Nodes[0].Nodes)
    {
    //得到修改后的Tag属性覆盖当前的m_objDrugClass
    getSubTree(node);
    }
    tv.ExpandAll();
    }
    private void getSubTree(TreeNode node)
    {
    if(node.Text==m_objDrugClass.Name)
    {
    m_objDrugClass=(DrugClass)node.Tag;
    tv.SelectedNode=node;
    }
    if(node.Nodes.Count>0)
    {
    foreach(TreeNode nodeChild in node.Nodes)
    {
    getSubTree(nodeChild);
    }
    }
    else
    {
    return;
    }
    }你别管我的代码是实现说明的,我是让你看看递归遍历树来修改属性
    不知道对你有何用,你看看吧,或许有用呢~~
      

  5.   

    你也可以让你的树的的CheckBox加上
    this.treeView1.CheckBoxes=true;
      

  6.   

    谢谢各位的热心,以上的我都知道怎么做,我想知道的是:如何自己重新绘制树上的CheckBox?