如何从数据库列文件路径创建树视图

我在数据库表中有一个列,其中包含表中每个文件的文件路径。 如何在c#中创建一个树视图,它将模仿我数据库中的filepath列。

以下是列中的示例文件路径列:

jsmith/project1/hello.cs jsmith/project1/what.cs jwilliams/project2/hello.cs 

我做了一个小例子。 我测试它,它工作正常。

请注意,我已经创建了一个MyDataBase类来模拟您的数据库:

 public void CreateTreeView() { TreeView myTreeview = new TreeView(); myTreeview.Dock = DockStyle.Fill; this.Controls.Add(myTreeview); foreach (string field in MyDataBase.FieldsInMyColumn()) { string[] elements = field.Split('/'); TreeNode parentNode = null; for (int i = 0; i < elements.Length - 1; ++i) { if (parentNode == null) { bool exits = false; foreach (TreeNode node in myTreeview.Nodes) { if (node.Text == elements[i]) { exits = true; parentNode = node; } } if (!exits) { TreeNode childNode = new TreeNode(elements[i]); myTreeview.Nodes.Add(childNode); parentNode = childNode; } } else { bool exits = false; foreach (TreeNode node in parentNode.Nodes) { if (node.Text == elements[i]) { exits = true; parentNode = node; } } if (!exits) { TreeNode childNode = new TreeNode(elements[i]); parentNode.Nodes.Add(childNode); parentNode = childNode; } } } if (parentNode != null) { parentNode.Nodes.Add(elements[elements.Length - 1]); } } } 

编辑

在这里,我粘贴了您不需要的代码,但它可以帮助您理解我的代码,或者自己复制/粘贴和尝试。

 public static class MyDataBase { private static List fields = new List(); public static void AddField(string field) { fields.Add(field); } public static IList FieldsInMyColumn() { return fields; } } 

form1中的构造函数

 public Form1() { InitializeComponent(); MyDataBase.AddField("jsmith/project1/hello.cs"); MyDataBase.AddField("jsmith/project1/what.cs"); MyDataBase.AddField("jsmith/project2/hello.cs"); CreateTreeView(); }