【发布时间】:2013-04-30 21:11:17
【问题描述】:
我正在使用treeview,我从选中此代码表单中使用,并在选择父节点或子节点
时取消选中所有子节点private bool updatingTreeView;
private void CheckChildren_ParentSelected(TreeNode node, Boolean isChecked)
{
foreach (TreeNode item in node.Nodes)
{
item.Checked = isChecked;
if (item.Nodes.Count > 0)
{
this.CheckChildren_ParentSelected(item, isChecked);
}
}
}
private void SelectParents(TreeNode node, Boolean isChecked)
{
//MessageBox.Show(node.Parent.ToString());
if (node.Parent != null)
{
node.Parent.Checked = isChecked;
SelectParents(node.Parent, isChecked);
}
}
private void treeView1_AfterCheck(object sender, TreeViewEventArgs e)
{
if (updatingTreeView) return;
updatingTreeView = true;
CheckChildren_ParentSelected(e.Node, e.Node.Checked);
SelectParents(e.Node, e.Node.Checked);
updatingTreeView = false;
}
现在
问题来了:
当我取消选中子节点时,我只想取消选中树视图中的所有子节点。
喜欢这张照片:
但是使用我的代码,所有父母和孩子(两者)都未选中!!!
所以现在我想知道如何只取消选中树视图中的所有子节点,
现在如何更改此代码以解决此问题?
亲切的问候。
【问题讨论】:
-
在您的示例中,您将如何取消选中节点 6?看来,如果你只清除根节点,你将永远无法清除根节点
-
@timmy :我不知道我的代码是否可行,但我知道这是可能的:D 所以你对我有什么想法吗? :(
-
对我来说,看起来 SelectParents 正在递归地取消检查所有父节点,直到 node.Parent 为空。
标签: c# treeview treenode checked unchecked