Problem
Der TreeView-Baum soll anhand von Strings befüllt werden
Ansatz
Verwendung eines Backslashes wie bei Dateipfaden zur Baumeinrückung
Lösung
private void populateTreeFromStringArray(string[] lines) { SortedList sl = new SortedList(); this.treeView1.Nodes.Clear(); this.treeView1.BeginUpdate(); // this.treeView1.ShowRootLines; TreeNodeCollection parentNodes = this.treeView1.Nodes; foreach (string line in lines) { string[] stringParts = line.Split('\\'); TreeNode nd = null; // Der Parent Key wird leer inititalisiert string strParentKey = string.Empty; foreach (string s in stringParts) { string sTrimmed = s.Trim(); if (sTrimmed == string.Empty) { continue; } if (strParentKey.Length > 0) { strParentKey = string.Concat(strParentKey, @"\", sTrimmed); } else { strParentKey = string.Concat(strParentKey, sTrimmed); } if (sl.ContainsKey(strParentKey)) { //verwende diesen nd = sl[strParentKey] as TreeNode; } else { //create new nd = new TreeNode(sTrimmed); //den FullPath adden sl.Add(strParentKey, nd); parentNodes.Add(nd); } parentNodes = nd.Nodes; } } this.treeView1.EndUpdate(); } private void button4_Click(object sender, EventArgs e) { string[] lines=new string[] { @"E:\", @"E:\Bier", @"D:\Eigene Dateien", @"D:\Programme\Games", @"D:\Eigene Dateien\Eigene Musik2", @"D:\", @"D:\Eigene Dateien\Eigene Downloads\Multi", @"D:\Eigene Dateien\Eigene Downloads\Multi\CD 1", @"D:\Eigene Dateien\Eigene Downloads\Multi\CD 2", @"D:\Eigene Dateien\Eigene Downloads\Multi\CD 3", @"D:\Eigene Dateien\Eigene Downloads\Multi\CD 3\Teil 2", @"D:\Eigene Dateien\Eigene Downloads\Multi\CD 4" }; populateTreeFromStringArray(lines); }