这个问题一直困扰大家!结贴!(winForm Tree CheckBox控制 )
实现功能 C# (winForm)本人在网上找的都是能实现单向的!最后自己组合写了一个!一、当选中某子节点,那么他的父、爷、祖爷都选中,那就说只要子、孙有一个被选中,那么他的父、爷节点都选中
二、当选中某父节点,那么他的所有子、孙都选中,取消选中父节点那么他的子、孙都取消。
(TreeMenu tree 的名字)
//事件AfterCheck
private void TreeMenu_AfterCheck(object sender, TreeViewEventArgs e)
{
if (e.Action != TreeViewAction.Unknown)
{
SetParentTreeNode(e.Node);
if (e.Node.Nodes.Count > 0)
{
this.CheckAllChildNodes(e.Node, e.Node.Checked);
}
}
}
//控制子节点
private void CheckAllChildNodes(TreeNode treeNode, bool nodeChecked)
{
foreach (TreeNode node in treeNode.Nodes)
{
node.Checked = nodeChecked;
if (node.Nodes.Count > 0)
{
this.CheckAllChildNodes(node, nodeChecked);
}
}
}
//控制父节点
private void SetParentTreeNode(TreeNode node)
{
if (node.Parent != null)
{
if (node.Checked)
{
node.Parent.Checked = node.Checked;
SetParentTreeNode(node.Parent);
}
else
{
bool b = false;
for (int i = 0; i < node.Parent.Nodes.Count; i++)
{
if (node.Parent.Nodes[i].Checked)
{
b = true;
break;
}
}
if (b)
{
node.Parent.Checked = true;
}
else
{
node.Parent.Checked = false;
this.SetParentTreeNode(node.Parent);
}
}
}
} --------------------编程问答-------------------- 沙发。 --------------------编程问答-------------------- 不错,收藏了! --------------------编程问答-------------------- 似乎、好像、大概、或许、可能这个问题不难哦。 --------------------编程问答-------------------- 学习了.. --------------------编程问答-------------------- 这个贴我以前就发过了 --------------------编程问答-------------------- 不错,收藏 --------------------编程问答--------------------
分享精神! --------------------编程问答-------------------- 这个收藏了 --------------------编程问答-------------------- o --------------------编程问答--------------------
2B~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --------------------编程问答-------------------- 似乎、好像、大概、或许、可能这个问题不难哦。 --------------------编程问答-------------------- 这个~~~那个~~~~~~~~~~~埃~~~~~~~~~ --------------------编程问答--------------------
yes --------------------编程问答-------------------- yes
补充:.NET技术 , C#