Cześć,
Na projekt do uczelni potrzebuje wykorzystać kontrolkę treeview do przedstawienia danych. Struktura danych ma wyglądać tak:
Name1, Level 0
Name2, Level 1
Name3, Level 1
Name4, Level 2
Name4+, Level 3
Name5, Level 2
Name5+, Level 3
Name6, Level 0
Czyli mój treeview powinien wyglądać tak:
+---Name1
| |
| +------Name2
| |
| +------Name3
| |
| +------Name4
| | |
| | +------Name4+
| |
| +------Name5
| |
| +------Name5+
|
+---Name6
Zapytałem się wujka Google, pokombinowałem i napisałem coś takiego:
public class TreeItem
{
public string Name;
public int Level;
public TreeItem(string name, int level)
{
Name = name; Level = level;
}
}
private void Form1_Load(object sender, EventArgs e)
{
List<TreeItem> items = new List<TreeItem>();
items.Add(new TreeItem("Name1", 0));
items.Add(new TreeItem("Name2", 1));
items.Add(new TreeItem("Name3", 1));
items.Add(new TreeItem("Name4", 2));
items.Add(new TreeItem("Name4+", 3));
items.Add(new TreeItem("Name5", 2));
items.Add(new TreeItem("Name5+", 3));
items.Add(new TreeItem("Name6", 0));
PopulateTree(treeView1, items);
}
public static void PopulateTree(TreeView tree, ICollection<TreeItem> items)
{
tree.Nodes.Clear();
List<TreeNode> roots = new List<TreeNode>();
roots.Add(tree.Nodes.Add("Items"));
foreach (TreeItem item in items)
{
if (item.Level == roots.Count) roots.Add(roots[roots.Count - 1].LastNode);
roots[item.Level].Nodes.Add(item.Name);
}
}
Ale niestety, mój treeview wygląda nico inaczej niż zakładałem. Dokładanie tak:
+---Name1
| |
| +------Name2
| |
| +------Name3
| |
| +------Name4
| | |
| | +------Name4+
| | |
| | +------Name5+
| |
| +------Name5
|
+---Name6
Szukam, szukam i nie mogę znaleźć błędu. Bardzo proszę o pomoc, bo utknąłem w martwym punkcie.
Z góry bardzo dziękuje.
Adam