TreeView,父节点勾选,子节点自动全部勾选

u010864841 2013-06-02 06:30:42

private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
TreeNode node = e.Node;
if (node.Nodes.Count == 0)
return;
if (node.Checked)
node.Nodes.OfType<TreeNode>().ToList().ForEach(x => x.Checked = true);
else
node.Nodes.OfType<TreeNode>().ToList().ForEach(x => x.Checked = false);
}


父节点勾选,子节点自动全部勾选,父节点取消勾选,子节点自动全部取消勾选
上面的代码,为什么没有产生效果,哪里出错了?
...全文
636 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
csdnFUCKINGSUCKS 2013-06-02
  • 打赏
  • 举报
回复
调试后发现AfterSelect事件获取node.Checked的值的时候, 第一次:初始化时,所有节点均未选中,node.Checked为False,所以代码执行的结果为全部子节点的选中状态为False. 第二次:选中父节点后点击该节点,node.Checked为True,代码结果为全部子节点选中. 所以不要处理AfterSelect事件 因为对应启用的CheckBoxes有AfterChekc和BeforeCheck事件可供处理
  • 打赏
  • 举报
回复
你是否调试了?能够走到 node.Nodes.OfType<TreeNode>().ToList().... 的语句?
人生导师 2013-06-02
  • 打赏
  • 举报
回复
具体实现可以参考下面这个文章: http://www.cnblogs.com/allen0118/archive/2012/11/28/2793037.html
csdnFUCKINGSUCKS 2013-06-02
  • 打赏
  • 举报
回复
1.确定treeView1的CheckBoxes属性为True 2.处理AfterCheck事件,处理AfterSelect事件无效(暂时还没弄明白为什么)
devmiao 2013-06-02
  • 打赏
  • 举报
回复
需要递归遍历所有级的节点。 写在Click事件中。

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧