treeview控件中的checkbox级联选择。
- private void setNodeCheckState(TreeNode tn){
- foreach(TreeNode t in tn.Nodes)
- {
- t.Checked = tn.Checked;
- setNodeCheckState(t);
- }
- }
- private void setParentNodeCheckState(TreeNode tn)
- {
- if (tn.Level > 0)
- {
- if (tn.Checked)
- {
- foreach (TreeNode stn in tn.Parent.Nodes)
- {
- if (stn.Checked != tn.Checked)
- return;
- }
- tn.Parent.Checked = tn.Checked;
- setParentNodeCheckState(tn.Parent);
- }
- else
- {
- tn.Parent.Checked = tn.Checked;
- setParentNodeCheckState(tn.Parent);
- }
- }
- }
- private void tv1_AfterCheck(object sender, TreeViewEventArgs e)
- {
- if (e.Action != TreeViewAction.Unknown)
- {
- setNodeCheckState(e.Node);
- setParentNodeCheckState(e.Node);
- }
- }