المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : Treeview aftercheck



C# Programming
03-29-2010, 07:50 PM
Hi,

I want to do the following:
1) when a node is checked, all the child nodes must be checked
2) when a node is unchecked, uncheck all the child nodes and see if there is at least one other node which is checked.

Because the method AfterCheck is launched after every change of the checked state, this method will also be launched when a childnode is checked/unchecked.
So when a node is unchecked, the recursive method to see if there is at least one node in the treeview still checked, will be launched for every child node.
Is there a way to only launch this method once instead of once a node?

code:
private void treeViewRekeningen_AfterCheck(object sender, TreeViewEventArgs e)
{
Boolean ret = false;
TreeNode node = e.Node;
if (node.Nodes != null)
{
foreach (TreeNode subnode in node.Nodes)
{
subnode.Checked = node.Checked;
}
}

if (e.Node.Checked == true)
{
ret = true;
}
else {
doorloopTreeview(node, ref ret);
}
if (ret == false)
{
Console.WriteLine("No node is checked")
}
else {
Console.WriteLine("At least one node is checked")
}
}

private void doorloopTreeview(TreeNode parent, ref Boolean gevonden)
{
if (gevonden == false)
{
foreach (TreeNode node in parent.Nodes)
{
doorloopTreeview(node, ref gevonden);
}
if (parent.Checked == true)
gevonden = true;
}
}