TreeView选中/取消选中所有子项

And*_*ich 4 c# treeview

如何在TreeView中选中/取消选中所有子项?当其中一项变为选中状态并且子项已选中/未选中时,可能发生了错误。

链接到VS 2010 Project + Exe

YouTube上的视频

private void Form1_Load(object sender, EventArgs e)
    {
        treeView1.CheckBoxes = true;
        treeView1.BeginUpdate();
        treeView1.Nodes.Add("1111");
        treeView1.Nodes[0].Nodes.Add("2222");
        treeView1.Nodes[0].Nodes.Add("2222");
        treeView1.Nodes[0].Nodes.Add("2222");
        treeView1.Nodes[0].Nodes.Add("2222");
        treeView1.Nodes[0].Nodes[1].Nodes.Add("3333");
        treeView1.Nodes[0].Nodes[1].Nodes[0].Nodes.Add("4444");
        treeView1.Nodes[0].Nodes[1].Nodes[0].Nodes.Add("4444");
        treeView1.Nodes[0].Nodes[1].Nodes[0].Nodes.Add("4444");
        treeView1.EndUpdate();

        treeView1.ExpandAll();
    }

    private void treeView1_AfterCheck(object sender, TreeViewEventArgs e)
    {
        treeView1.BeginUpdate();

        foreach (TreeNode Node in e.Node.Nodes)
        {
            Node.Checked = e.Node.Checked;
        }

        treeView1.EndUpdate();
    }
Run Code Online (Sandbox Code Playgroud)

Met*_*Man 5

使用您在Form_Load中具有的代码,使该代码正常工作,并在代码中添加这两种方法

private void Form1_Load(object sender, EventArgs e)
{
    treeView1.CheckBoxes = true;
    treeView1.BeginUpdate();
    treeView1.Nodes.Add("1111");
    treeView1.Nodes[0].Nodes.Add("2222");
    treeView1.Nodes[0].Nodes.Add("2222");
    treeView1.Nodes[0].Nodes.Add("2222");
    treeView1.Nodes[0].Nodes.Add("2222");
    treeView1.Nodes[0].Nodes[1].Nodes.Add("3333");
    treeView1.Nodes[0].Nodes[1].Nodes[0].Nodes.Add("4444");
    treeView1.Nodes[0].Nodes[1].Nodes[0].Nodes.Add("4444");
    treeView1.Nodes[0].Nodes[1].Nodes[0].Nodes.Add("4444");
    treeView1.EndUpdate();
    treeView1.ExpandAll();
}

private void treeView1_AfterCheck(object sender, TreeViewEventArgs e)
{
    foreach (TreeNode childNode in e.Node.Nodes)
    {
        childNode.Checked = e.Node.Checked;
    }
}
Run Code Online (Sandbox Code Playgroud)