c#子节点全部选中,则父节点选中;子节点不全被选中,父节点不选中。

同理,父节点被选中,则子节点全部被选中;父节点不选中,则子节点至少有一个不选中。... 同理,父节点被选中,则子节点全部被选中;父节点不选中,则子节点至少有一个不选中。 展开
 我来答
leiyangbdwk
2013-07-19 · TA获得超过3295个赞
知道大有可为答主
回答量:4975
采纳率:12%
帮助的人:4385万
展开全部
    public partial class Form1 : Form
    {
        //直接新建一个Form,粘贴代码,运行看效果
        //注意不要双击,双击貌似有问题
        TreeView tv = new TreeView();
        public Form1()
        {
            InitializeComponent();
            tv.AfterCheck += new TreeViewEventHandler(this.tv_AfterCheck);
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            tv.CheckBoxes = true;
            TreeNode root = new TreeNode("root");
            TreeNode n1 = new TreeNode("n1");
            root.Nodes.Add(n1);
            TreeNode n2 = new TreeNode("n2");
            root.Nodes.Add(n2);
            tv.Nodes.Add(root);
            Controls.Add(tv);
            tv.ExpandAll();
        }

        private void tv_AfterCheck(object sender, TreeViewEventArgs e)
        {
            TreeNode n = e.Node;
            tv.AfterCheck -= new TreeViewEventHandler(this.tv_AfterCheck);
            foreach (TreeNode tn in n.Nodes)
                tn.Checked = n.Checked;
            if (n.Parent != null)
            {
                TreeNode p = n.Parent;
                p.Checked = !p.Nodes.OfType<TreeNode>().Any<TreeNode>(tn => tn.Checked == false);
            }
            tv.AfterCheck += new TreeViewEventHandler(this.tv_AfterCheck);
        }
    }
匿名用户
2013-07-19
展开全部
最简单也是最笨的方法,递归判断是否有未选中,
1从当前变更节点为起始
2如果变更后为未选中,那么父节点、父父节点(递归判断)都为未选中
3如果为选中,则判断他父节点A下的所有子节点是否有未选中
4在3中没有未选中则将3中父节点A选中,再找刚节点A父节点B下所有子节点,重复3-4过程
5如果有未选中则跳出循环
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
QQ2k5
2013-07-19 · TA获得超过438个赞
知道小有建树答主
回答量:911
采纳率:25%
帮助的人:259万
展开全部
这个只能是循环去判断了,
这里有一点要注意,一个节点(除去根节点)有可能是父节点,也有可能是子节点,所有这两种情况都要去判断
当选中一个节点的时候,代码控制去吧他的子节点全部选上(如果没有就不选),
然后获得该节点的父节点,这里需要用到递归了,
判断这个父节点的子节点是否全部选中,是,则父节点选中,否,则不管;不要着急,当这个父节点选中后,你还去去判断这个父节点的父节点下的子节点是否全部选中,就这样,一层层递归,直到节点时根节点
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式