2015-08-31 68 views
-4

有沒有什麼方法可以直接在窗體上查看文件系統,其功能類似於Visual Studio C#中的OpenFileDialog(打開文件夾,選擇文件)?C#在窗體上查看文件樹

+3

是的,當然有。如果你問是否有內置的控制,你可以放在窗體上,然後不。否則,方法是使用'System.IO'' File'和'Directory'類來遞歸驅動器上的條目,並且我會建議延遲加載。 –

+0

沒有比試圖實現他們自己的文件瀏覽器的應用程序更讓我惱火了。 –

回答

1

試試這個:

private void Button1_Click(object sender, EventArgs e) 
{ 
    ListDirectory("Your TreeView Name here", "root path") 
} 

private void ListDirectory(TreeView tv, string path) 
{ 
    tv.Nodes.Clear(); 
    var rootDirectoryInfo = new DirectoryInfo(path); 
    tv.Nodes.Add(CreateDirectoryNode(rootDirectoryInfo)); 
} 

private static TreeNode CreateDirectoryNode(DirectoryInfo directoryInfo) 
{ 
    var directoryNode = new TreeNode(directoryInfo.Name); 
    foreach (var directory in directoryInfo.GetDirectories()) 
     directoryNode.Nodes.Add(CreateDirectoryNode(directory)); 
    foreach (var file in directoryInfo.GetFiles()) 
     directoryNode.Nodes.Add(new TreeNode(file.Name)); 
    return directoryNode; 
} 
+0

這是一個跨線程違規,原則上它的權利,但使用類似根路徑的東西將導致應用程序在遞歸加載整個驅動器時停止響應。如果文件夾路徑足夠深,您也可能會遇到堆棧溢出異常。 –