using your code that you have in the Form_Load keep that code it works and add these 2 methods in your code
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 CheckChildrentreeView1_AfterCheck(TreeNodeobject rootNodesender, boolTreeViewEventArgs isCheckede) { foreach (TreeNode nodechildNode in rootNodee.Node.Nodes) { CheckChildren(node, isChecked); nodechildNode.Checked = isChecked; } } private void treeView1_AfterCheck(object sender, TreeViewEventArgs e) {.Node.Checked; CheckChildren(e.Node, e.Node.Checked);} }