基本上我尝试在指定路径中打开foreach文件夹。 例如 - 在指定路径中我有一个名为“A”的文件夹,在这个文件夹中有另外一个名为“B1”“B2”“B3”的文件夹等等,在这些文件夹里面还有另一个名为“C”foreach“C”文件夹的文件夹有一个名为“D”的文件。 我正在尝试将“B”文件夹放入组合框中,并在选择文件夹时打开“D”文件。
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 :(得分:0)
这是一个可以让你前进的例子。首先,使用文件夹A
中的文件夹填充ComboBox:
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);
}
}
当您从ComboBox中选择另一个文件夹时,您需要一个事件,我们将使用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;
}
请注意,这只是一个让您前进而不是完整解决方案的示例!例如,如果您需要检查文件是否确实位于所选文件夹的子文件夹中,则需要自行构建额外的验证。希望这会有所帮助。