2014-01-22 111 views
0

基本上我嘗試在指定的路徑中打開一個文件foreach文件夾。 例如 - 在指定的路徑中,我有一個名爲「A」的文件夾,在這個文件夾內有另一個名爲「B1」「B2」「B3」的文件夾,所以在這些文件夾中有另一個名爲「C」 foreach「C」文件夾中有一個名爲「D」的文件。 我試圖將「B」文件夾放入組合框,並選擇一個文件夾以打開「D」文件。C#查找文件foreach文件夾

A > B1 > C > D.txt 
    > B2 > C > D.txt 
    > B3 > C > D.txt 

等等。 請幫我管理這個。

var tfs = 
TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri(path)); 
var vcs = tfs.GetService<VersionControlServer>(); 
    private void PopulateTreeView() 
    { 
     var tfs = 
      TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("http://tfs2012:8080/tfs/DefaultCollection_2010/")); 
     var vcs = tfs.GetService<VersionControlServer>(); 
     var workspace = vcs.QueryWorkspaces(workspaceName, vcs.AuthorizedUser, Environment.MachineName)[0]; 
     _workspace = workspace; 
     tvWksNavigator.Nodes.Clear(); 
      var info = new DirectoryInfo(workspace.Folders[10].LocalItem); 
      if (info.Exists) 
      { 
       var rootNode = new TreeNode(info.Name) { Tag = info }; 
       TreeNode bNode; 
       DirectoryInfo[] subSubDirs; 
       foreach (var subDir in info.GetDirectories().Where(c => c.Name=="Media")) 
       { 
        bNode = new TreeNode(subDir.Name, 0, 0); 
        bNode.Tag = subDir; 
        subSubDirs = subDir.GetDirectories(); 

        if (subSubDirs.Length != 0) 
        { 
         GetDirectories(subSubDirs, bNode); 
        } 
        rootNode.Nodes.Add(bNode);    
       } 
       tvWksNavigator.Nodes.Add(rootNode); 
      } 
    } 

    private void GetDirectories(DirectoryInfo[] subDirs, 
     TreeNode nodeToAddTo) 
    { 
     TreeNode aNode; 
     DirectoryInfo[] subSubDirs; 
     foreach (var subDir in subDirs) 
     { 
      aNode = new TreeNode(subDir.Name, 0, 0); 
      aNode.Tag = subDir; 
      aNode.ImageKey = "folder"; 
      subSubDirs = subDir.GetDirectories(); 

      if (subSubDirs.Length != 0) 
      { 
       GetDirectories(subSubDirs, aNode); 
      } 
      nodeToAddTo.Nodes.Add(aNode); 
     } 
    } 
+0

我做了一個樹形視圖,但我無法拿到每個文件夾的具體位置 – user1415791

+0

顯示你的代碼。 – DaveDev

+0

是的,請顯示你到目前爲止。你也總是知道文件夾結構嗎?會有一個B4嗎?樹可以擴展到C以外的目錄嗎? – MattR

回答

0

下面是一個可以幫助您走的示例。首先,填寫文件夾A內的文件夾中的組合框:

private void FillComboBox() 
{ 
    foreach(string dir in Directory.GetDirectories(@"C:\Temp\A")) 
    { 
     DirectoryInfo info = new DirectoryInfo(dir); 
     //foldersCB is the Name of the ComboBox 
     foldersCB.Items.Add(info); 
    } 
} 

在您需要的時候從組合框選擇另一個文件夾的事件,我們將使用SelectedIndexChanged事件:

private void foldersCB_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    string selectedItem = foldersCB.SelectedItem.ToString(); 
    string filePath = GetFileFromFolder(selectedItem); 
    //open the file using 'filePath' 
} 

GetFileFromFolder()是將只是獲得第一個文件名匹配,與D.txt結束的路徑的方法:

private string GetFileFromFolder(string path) 
{ 
    string fileName = Directory.GetFiles(path, "*D.txt", SearchOption.AllDirectories).FirstOrDefault(); 
    return fileName; 
} 

請請注意,這只是一個例子,可以幫助您解決問題,而不是完整的解決方案!例如,如果您需要檢查文件是否確實位於選定文件夾的子文件夾中,則需要自行構建額外的驗證。希望這可以幫助。

+0

這非常有幫助謝謝。 – user1415791