Click here to Skip to main content
15,887,214 members
Home / Discussions / C#
   

C#

 
GeneralRe: TreeView Recursion Pin
Muammar©1-Aug-09 23:18
Muammar©1-Aug-09 23:18 
GeneralRe: TreeView Recursion Pin
OriginalGriff2-Aug-09 0:34
mveOriginalGriff2-Aug-09 0:34 
GeneralRe: TreeView Recursion Pin
Muammar©2-Aug-09 1:01
Muammar©2-Aug-09 1:01 
AnswerRe: TreeView Recursion Pin
N a v a n e e t h9-Aug-09 4:47
N a v a n e e t h9-Aug-09 4:47 
GeneralRe: TreeView Recursion Pin
Muammar©9-Aug-09 9:53
Muammar©9-Aug-09 9:53 
GeneralRe: TreeView Recursion Pin
N a v a n e e t h9-Aug-09 16:31
N a v a n e e t h9-Aug-09 16:31 
GeneralRe: TreeView Recursion Pin
Muammar©10-Aug-09 2:19
Muammar©10-Aug-09 2:19 
GeneralRe: TreeView Recursion Pin
N a v a n e e t h10-Aug-09 7:40
N a v a n e e t h10-Aug-09 7:40 
Muammar© wrote:
but I still dont get what your PrintTree is for


Its the recursive method. It prints itself and asks children to do so. Each children will repeat this step until there is no children.

Muammar© wrote:
I just want to fill a treeView control on a windows form


Well, you could have said this before. Fortunately, our node implementation is pretty well extensible. So here it goes.

You need to add the below property to Node class. This property returns parent node of a node.

public Node Parent { get { return parent; } }

Since our Node class and TreeView's TreeNode class has different interfaces, we need a builder class that can convert Node instance into equivalent TreeNode. Name it TreeNodeBuilder.
public sealed class TreeNodeBuilder
{
    Node root = null;
    Dictionary<int, TreeNode> treeNodes = new Dictionary<int, TreeNode>();
    public TreeNodeBuilder(Node root)
    {
        this.root = root;
    }

    public TreeNode BuildTreeNode()
    {
        // root node. Baseline in your case
        TreeNode rootTreeNode = null;
        root.PrintTree(delegate(Node node)
        {
            // parent is null, this will be the root
            if (node.Parent == null)
            {
                rootTreeNode = new TreeNode(node.Name);
                rootTreeNode.Tag = node;
                // keeping this treenode
                treeNodes.Add(node.Id, rootTreeNode);
            }
            else
            {
                // checking any tree node added for this parent id
                if (treeNodes.ContainsKey(node.Parent.Id))
                {
                    TreeNode parent = treeNodes[node.Parent.Id];
                    TreeNode current = parent.Nodes.Add(node.Name);
                    current.Tag = node;
                    treeNodes.Add(node.Id, current);
                }
            }
        });
        return rootTreeNode;
    }
}
All you need to do is to supply your root node (baseline) to this class and call BuildTreeNode(). Here is how you do that,
// Code to create node in a loop. Same in the last post
TreeNodeBuilder nodeBuilder = new TreeNodeBuilder(baseLine); // baseline will be root node
treeView1.Nodes.Add(nodeBuilder.BuildTreeNode());
Run it and you are done!

Smile | :)


GeneralRe: TreeView Recursion Pin
Muammar©10-Aug-09 7:49
Muammar©10-Aug-09 7:49 
GeneralRe: TreeView Recursion Pin
Muammar©10-Aug-09 8:04
Muammar©10-Aug-09 8:04 
GeneralRe: TreeView Recursion Pin
Muammar©10-Aug-09 8:14
Muammar©10-Aug-09 8:14 
GeneralSolved:) Pin
Muammar©10-Aug-09 8:21
Muammar©10-Aug-09 8:21 
GeneralA minor bug?? I hope :s [modified] Pin
Muammar©10-Aug-09 8:35
Muammar©10-Aug-09 8:35 
GeneralRe: A minor bug?? I hope :s Pin
N a v a n e e t h10-Aug-09 9:29
N a v a n e e t h10-Aug-09 9:29 
GeneralRe: A minor bug?? I hope :s Pin
Muammar©10-Aug-09 10:21
Muammar©10-Aug-09 10:21 
GeneralRe: TreeView Recursion [modified] Pin
Muammar©10-Aug-09 7:45
Muammar©10-Aug-09 7:45 
General[Message Deleted] Pin
Muammar©11-Aug-09 3:13
Muammar©11-Aug-09 3:13 
GeneralRe: TreeView Recursion Pin
N a v a n e e t h11-Aug-09 4:23
N a v a n e e t h11-Aug-09 4:23 
GeneralRe: TreeView Recursion Pin
Muammar©12-Aug-09 3:36
Muammar©12-Aug-09 3:36 
GeneralRe: TreeView Recursion Pin
N a v a n e e t h12-Aug-09 7:17
N a v a n e e t h12-Aug-09 7:17 
GeneralRe: TreeView Recursion Pin
Muammar©12-Aug-09 7:37
Muammar©12-Aug-09 7:37 
GeneralRe: TreeView Recursion Pin
Muammar©12-Aug-09 10:41
Muammar©12-Aug-09 10:41 
AnswerSolved! Pin
Muammar©13-Aug-09 7:10
Muammar©13-Aug-09 7:10 
GeneralRe: Solved! Pin
N a v a n e e t h13-Aug-09 15:37
N a v a n e e t h13-Aug-09 15:37 
GeneralRe: Solved! Pin
Muammar©14-Aug-09 1:16
Muammar©14-Aug-09 1:16 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.