using System; using System.Collections.Generic; using System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { List<Header> list = new List<Header>() { new Header() { Name = "1", List = new List<Header>() { new Header() { Name = "1.1", List = new List<Header>() { new Header() { Name = "1.1.1"}, new Header() { Name = "1.1.2"}, new Header() { Name = "1.1.3"}, } }, new Header() { Name = "1.2"}, new Header() { Name = "1.3"}, } }, new Header() { Name = "2", List = new List<Header>() { new Header() { Name = "2.1", List = new List<Header>() { new Header() { Name = "2.1.1"}, new Header() { Name = "2.1.2"}, new Header() { Name = "2.1.3"}, } }, new Header() { Name = "2.2"}, new Header() { Name = "2.3"}, }} }; treeView1.Nodes.Add("Headers"); BuildTreeView(list, treeView1.Nodes[0]); } private void BuildTreeView(List<Header> list, TreeNode parentNode) { if (list.Count != 0) { foreach (var item in list) { TreeNode tn = new TreeNode(item.Name); parentNode.Nodes.Add(tn); if (item.List != null) { BuildTreeView(item.List, tn); } } } } } sealed class Header { public string Name { get; set; } public List<Header> List { get; set; } } }
Actually, if you already have a data structure, you can simply use the method to build the tree.
My example deduces so:
