我正在使用parent node
控件列出我的所有菜单,以便我可以授予每个用户访问权限。当用户选中一个或多个check = true
时,我将如何强制childnode
到child nodes
?
我在检查parent node
时使用以下代码检查/取消选中所有private void treeView_AfterCheck(object sender, TreeViewEventArgs e)
{
if (e.Action != TreeViewAction.Unknown)
{
if (e.Node.Nodes.Count > 0)
{
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);
}
}
}
。
import urwid
icon = u"\U0001F600"
top = urwid.Padding(
urwid.LineBox(
urwid.Filler(urwid.Text(icon, align="center")
)), width=10)
urwid.MainLoop(top).run()
答案 0 :(得分:0)
TreeNode具有“父”属性,应该可以轻松实现 未经测试的代码,但应该给你一个想法。
private void CheckAllParentNodes(TreeNode treeNode, bool nodeChecked)
{
TreeNode parentNode = treeNode.Parent;
while (parentNode != null)
{
// check if parent has still checked child nodes
if (parent.Nodes.Any(n => n.Checked)) return;
parentNode.Checked = nodeChecked;
parentNode = parentNode.Parent;
}
}