菜鸟问题,如何用一个按钮清空treeview所有结点的状态为没选中?

cqlijie 2004-08-31 12:39:17
如题
还一个:当父结点选中时,所有子结点为选中已经实现
private void treeView1_AfterCheck(object sender, System.Windows.Forms.TreeViewEventArgs e)
{
if (e.Node.Checked)
for (int i = 0; i < e.Node.Nodes.Count; i++)
e.Node.Nodes[i].Checked = true;
else
for (int i = 0; i < e.Node.Nodes.Count; i++)
{
e.Node.Nodes[i].Checked = false;
}

}

可是当子结点变为未选中状态,父结点还是选中状态,这个怎么弄呢??
...全文
264 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
cqlijie 2004-09-01
  • 打赏
  • 举报
回复
太谢谢了
搞定
lusonghe18 2004-09-01
  • 打赏
  • 举报
回复
private void treeView_AfterCheck(object sender,System.Windows.Forms.TreeViewEventArgs e)
{
if(e.Action == TreeViewAction.ByMouse ||
e.Action == TreeViewAction.ByKeyboard)
{
SetChildNodeCheck(e.Node);
if(e.Node.Parent != null)
{
SetParentNodeCheck(e.Node);
}
}
}

private void SetChildNodeCheck(TreeNode node)
{
foreach(TreeNode _node in node.Nodes)
{
_node.Checked = node.Checked;
SetChildNodeCheck(_node);
}
}

private void SetParentNodeCheck(TreeNode node)
{
if(node.Parent != null)
{
int c = 0,uc = 0;
for(int m = 0; m < node.Parent.Nodes.Count; m++)
{
if(node.Parent.Nodes[m].Checked)
c++;
else
uc++;
}
if(node.Parent.Nodes.Count == c)
{
node.Parent.Checked = true;
}
else
{
node.Parent.Checked = false;
}
SetParentNodeCheck(node.Parent);
}
}
cqlijie 2004-09-01
  • 打赏
  • 举报
回复
各位老大些
帮帮忙塞
lusonghe18 2004-09-01
  • 打赏
  • 举报
回复
靠就给8分,你扣啊
cqlijie 2004-08-31
  • 打赏
  • 举报
回复
题目的问题搞定了~^_^

当子结点变为未选中状态,父结点还是选中状态,这个怎么弄呢??

再补充个哈,用expandall()展开结点,右边的滚动条在最下方,能让他在最上方吗??

不甚感谢!!
The123 2004-08-31
  • 打赏
  • 举报
回复
bool isAnyNodeChecked = false;

foreach(TreeNode node in e.Node.Parent.Nodes)
{
if(node.Checked == true)
{
isAnyNodeChecked = true;
break;
}
}
if(isAnyNodeChecked == false)
e.Node.Parent.Checked = false;
cqlijie 2004-08-31
  • 打赏
  • 举报
回复
The123,你的总是“未将对象实例化”错误 e.Node.Parent.Nodes

递归具体怎么写呢?老是出错,写不好
yellowhwb 2004-08-31
  • 打赏
  • 举报
回复
你用递归去check()节点就可以了!

111,120

社区成员

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

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

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