说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

winForm中应用带CheckBox的TreeView

编辑:说三道四文库 发布时间:2018-04-25 08:40
HTML文档下载 WORD文档下载 PDF文档下载
如题;

1、如何实现当子节点全部选中/取消,则父节点选中/取消

2、如何实现当父节点选中/取消,则子节点全部选中/取消

哪位能慷慨相助,最好能有源码实例,先谢谢了!
private void treeView1_AfterCheck(object sender, System.Windows.Forms.TreeViewEventArgs e)
{
if(e.Action != TreeViewAction.Unknown)
{
CheckAllChildNodes(e.Node,e.Node.Checked);

//选中父节点
bool bol=true;
if(e.Node.Parent !=null)
{
for(int i=0;i<e.Node.Parent.Nodes.Count;i++)
{
if(!e.Node.Parent.Nodes[i].Checked)
bol = false;
}
e.Node.Parent.Checked = bol;
}
}
}

//选中子节点
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);
}
}
}


1、如何实现当子节点全部选中/取消,则父节点选中/取消



  楼主是想子节点都选中的时候,所有的父节点都选中吗?如果是的话稍微改一下即可


private void treeView1_AfterCheck(object sender, System.Windows.Forms.TreeViewEventArgs e)
{
if(e.Action != TreeViewAction.Unknown)
{
CheckAllChildNodes(e.Node,e.Node.Checked);

//选中父节点
bool bol=true;
if(e.Node.Parent !=null)
{
for(int i=0;i<e.Node.Parent.Nodes.Count;i++)
{
if(!e.Node.Parent.Nodes[i].Checked)
bol = false;
}

TreeNode tn=e.Node;
while ( tn.Parent != null )
{
tn = tn.Parent;
tn.Checked = bol;
}
tn.Checked = bol;
}
}
}
谢谢,请问,如何才能实现点击checkbox,和点击node一样的效果呢
就是当我点击node得时候,如果当前node 的checkbox是选中的情况下,变为不选中;不选中的情况下,变为选中;
马上揭帖,谢谢楼上的兄弟!!!!
接分~
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘