假設我已經在數據庫中保存了文件路徑。現在我想通過treeview顯示這些文件路徑。我發現一個樣本工作正常,但不知道數據庫中會有大量數據,那麼樹視圖總體將會掛起或花費太長時間。我在這裏給代碼。請檢查並告訴哪些可以糾正,結果在數據庫中會有大量數據時性能會很好。如何使用保存在數據庫中的文件路徑填充treeview
public static class MyDataBase
{
private static List<string> fields = new List<string>();
public static void AddField(string field)
{
fields.Add(field);
}
public static IList<string> FieldsInMyColumn()
{
return fields;
}
}
public void CreateTreeView()
{
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]);
}
}
}
private void button1_Click(object sender, EventArgs e)
{
MyDataBase.AddField(@"c:\jsmith\project1\hello.cs");
MyDataBase.AddField(@"c:\jsmith\project1\what.cs");
MyDataBase.AddField(@"c:\jsmith\project2\hello.cs");
MyDataBase.AddField(@"c:\jsmith\project1\tdp.cs");
MyDataBase.AddField(@"c:\jsmith\project2\ship.cs");
MyDataBase.AddField(@"d:\jsmith\project1\hello404.cs");
MyDataBase.AddField(@"c:\jsmith1\project2\ship.cs");
CreateTreeView();
}
感謝
即可加載子節點,供我自己參考。 http://stackoverflow.com/questions/6415037/populate-treeview-from-list-of-file-paths-in-wpf http://stackoverflow.com/questions/673931/file-system-treeview http: //stackoverflow.com/questions/2436201/how-to-make-a-treeview-from-a-database-column-filepath – Thomas