Tjena Inte så hajj på treeviewn, Ja precis...men jag löste det med en klass-metod: hackade ihop en liten funktion som kollar i hela trädet om parent är någonstans högre upp i trädet än vad child är: Man tackar...tyvärr var det ju några minuter försent. Det var ju dock enklare än vad jag trodde men jag tycker att C# borde haft det som en inbyggd funktion....men men man kan ju inte få allt... *ASG*... där ser man .. samma funktion, två tillvägagångsätt ;0) därför har jag gått från vb till c#, då är allt nytt för en *S*TreeNode och dess förfädrar
Har ett litet problem...Skulle vilja kolla om en node är en förälder til en annan node eller rättare sagt en förfader. I Java kan man ju använda parent.isNodeAncestor(child) men hur fasiken kan man göra detta utan att själv behöva gå igenom hela trädet??? Nån som har nåt bra förslag?
/JohanSv: TreeNode och dess förfädrar
men borde inte
<code>
bool isAncestor = childNode.Paren.Equals(parentNode);
</code>
den kod raden kollar vilken som är den direkta föräldern, men du ville kanske kolla hela trädet upp till root nivå?Sv: TreeNode och dess förfädrar
<code>
public static bool isNodeAncestor(TreeNode child, TreeNode parent)
{
bool found=false;
TreeNode h=child;
TreeNode hparent ;
while ((( hparent = h.Parent )!= null) &&(!found) )
{
if (hparent==parent)
{
found=true;
}
h = hparent ;
}
return found ;
}
</code>
/JohanSv: TreeNode och dess förfädrar
<code>
private bool IsAncestor(TreeNode child, TreeNode parent)
{
TreeNode immediateParent = child.Parent;
if(immediateParent != null)
{
if(immediateParent.Equals(parent)
{
return true;
}
else if(immediateParent.Parent !=null)
{
return IsAncestor(immediateParent.Parent, parent);
}
}
return false;
}
</code>Sv: TreeNode och dess förfädrar
Det är lite trist bara när man gjort på ett sätt i Java och sedan vill man ju inte skriva om precis allt när man konverterar...ibland känns det dock som lättast :)
/JohanSv: TreeNode och dess förfädrar
Sv: TreeNode och dess förfädrar