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);
}