Treeview控件带Checkbox的节点选中问题
在treeview控件(带checkbox)中,我发现在AfterCheck事件中,如勾选中某节点,则该节点下所有子节点就全部被勾选中,如将该节点状态改为未选中,则其下所有子节点全部改为未选中。好像很难做到。在AfterSelect中可以做到,但是在AfterSelect中,必须要点击节点名称,而不能勾选节点前的checkbox。
哪位大侠有实现的源代码,请指教。或发e-mail: zjjsaaa@163.com
问题点数:100、回复次数:3Top
1 楼dsclub(任搏软)回复于 2004-12-01 00:39:17 得分 1
自己遍历一下不行么?Top
2 楼dazhu2(【倚天不出,谁与争锋】)回复于 2004-12-01 01:32:40 得分 99
试一下:
private void tvw_AfterCheck(object sender, System.Windows.Forms.TreeViewEventArgs e)
{
TreeNode currentnode=e.Node;
if(currentnode.Checked==true)
{
checktvw(currentnode);
}
else
{
foreach(TreeNode node1 in currentnode.Nodes)
{
node1.Checked=false;
}
}
}
//递归方法
private void checktvw(TreeNode node0)
{
foreach(TreeNode m in node0.Nodes)
{
m.Checked=true;
this.tvw.ExpandAll();
if(m.Nodes.Count>0 && m.Checked==true)
{
foreach(TreeNode n in m.Nodes)
{
checktvw(n);
}
}
}
}
Top
3 楼dazhu2(【倚天不出,谁与争锋】)回复于 2004-12-01 01:40:19 得分 0
其实不要递归也可以:
private void tvw_AfterCheck(object sender, System.Windows.Forms.TreeViewEventArgs e)
{
TreeNode currentnode=e.Node;
if(currentnode.Checked==true)
{
//checktvw(currentnode);
foreach(TreeNode a in currentnode.Nodes)
a.Checked=true;
}
else
{
foreach(TreeNode node1 in currentnode.Nodes)
{
node1.Checked=false;
}
}
}Top




