TreeView节点复选框选择

huan_jin 2010-04-03 04:23:29
大家帮我看看怎么回事啊 出现错误啦 无限循环
private void treeView1_AfterCheck(object sender, TreeViewEventArgs e)
{
TreeView pTreeView = sender as TreeView;
TreeNode pTreeNode = pTreeView.SelectedNode;
if (pTreeView.SelectedNode != null)
{
if (pTreeNode.Parent != null)
{
bool pbool = pTreeNode.Checked;
if (pbool == false)
{
pTreeNode.Checked = true;

}
else
{
pTreeNode.Checked = false;

}
}
else
{
foreach (TreeNode nodes in pTreeNode.Nodes)
{
if (pTreeNode.Checked)
{
nodes.Checked = false;

}
else
{
nodes.Checked = true;

}
}
}
}
}

就是想实现 点击父节点前的复选框改变子节点前面复选框的状态 如果是子节点就直接改变子节点的状态
...全文
118 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
huan_jin 2010-04-03
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wuyq11 的回复:]
private void treeView1_AfterCheck(object sender, System.Windows.Forms.TreeViewEventArgs e)
{
if(e.Action != TreeViewAction.Unknown)
{
if(e.Node.Nodes.Count > 0)
{
this.CheckAllChildN……
[/Quote]


谢谢啊 问题解决啦
lzsh0622 2010-04-03
  • 打赏
  • 举报
回复

private void treeView1_AfterCheck(object sender, TreeViewEventArgs e)
{
TreeView pTreeView = sender as TreeView;
TreeNode pTreeNode = pTreeView.SelectedNode;
if (pTreeView.SelectedNode != null)
{
if (pTreeNode.Parent != null)
{
bool pbool = pTreeNode.Checked;
if (pbool == false)
{
pTreeNode.Checked = true;

}
else
{
//pTreeNode.Checked = false; // 此行无用
}
}
else
{
foreach (TreeNode nodes in pTreeNode.Nodes)
{
if (pTreeNode.Checked)
{
nodes.Checked = false;

}
else
{
nodes.Checked = true;

}
}
}
}
}

staticuser 2010-04-03
  • 打赏
  • 举报
回复

//代码放在这里看着多舒服啊,那个太难看错误了。。
wuyq11 2010-04-03
  • 打赏
  • 举报
回复
private void treeView1_AfterCheck(object sender, System.Windows.Forms.TreeViewEventArgs e)
{
if(e.Action != TreeViewAction.Unknown)
{
if(e.Node.Nodes.Count > 0)
{
this.CheckAllChildNodes(e.Node, e.Node.Checked);
}
if(e.Node.Checked == true)
{
this.selectParent(e.Node);
}
if(e.Node.Checked == false)
{
this.cancelParent(e.Node);
}
}
}
public 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 cancelParent(TreeNode node)
{
if(node.Parent != null)
{
bool isCheck = false;
foreach(TreeNode n in node.Parent.Nodes)
{
if(n.Checked == true)
isCheck = true;
}
if(!isCheck)
node.Parent.Checked = false;
}
}
private void selectParent(TreeNode node)
{
if(node.Parent != null && node.Parent.Checked == false)
{
node.Parent.Checked = true;
if(node.Parent.Parent != null)
this.selectParent(node.Parent);
}
}
huan_jin 2010-04-03
  • 打赏
  • 举报
回复
自己顶一下啊 高手来帮忙啊

110,534

社区成员

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

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

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