0

我有一个系统托盘应用程序,它使用 ContextMenus 根据 SQL 结果集动态创建文件夹列表。

生成 SQL 结果集后,将返回活动任务列表。然后,应用程序使用 for each 循环从结果集中为每个活动任务生成 ToolStripMenuItem。

这就是我开始挣扎的地方。我一直在寻找使用户能够打开这些动态创建的文件夹的最佳方法。

我已经创建了一个由发件人控制的点击事件处理程序,但我想不出一种体面的(工作)方法来找到创建的文件夹的文件路径。

我有一个基本文件夹,假设“C:\”有两个子文件夹,2014 和 2015。我需要我的应用程序获取单击的文件夹名称并搜索“C:\”中的实际文件夹和“C”的子文件夹:\",然后使用 process.start 打开它。

我首先使用 System.IO.Directory.GetDirectories 为每个循环创建一个,但是即使使用 SearchOption.AllDirectories 方法重载,这似乎也只能找到第一组文件夹(EG:2014、2015)。代码示例:

string path2 = @"C:\";
foreach (string dir in System.IO.Directory.GetDirectories(path2, SearchOption.AllDirectories))
    {
        if (new DirectoryInfo(dir).Name.Contains(test))
        {
            MessageBox.Show(dir);
        }
    }

任何人都可以提供一些关于如何搜索包含预定义字符串(不一定会完成完整文件夹路径)的文件夹和子文件夹的想法,以便可以返回完整的文件路径?

谢谢

4

2 回答 2

2

老实说,我什至不确定你的代码是如何编译的,因为在我的 C# 中没有Directory.GetDirectories(...)需要 astring和 a 的重载SearchOption

在我看来,您不需要递归,但实际上只需要使用特定的重载Directory.GetDirectories

string path2 = @"C:\";
foreach (string dir in Directory.GetDirectories(path2, test, SearchOption.AllDirectories))
{
    // do what you want with dir.
}

path2这表示“对于名称匹配的每个目录和子目录test,执行...”。

于 2015-06-17T15:36:49.360 回答
1

为了获取所有子文件夹,您可以使用此代码

DirectoryInfo dirInfo = new DirectoryInfo(@"Path to Folder");
DirectoryInfo[] subFolders = dirInfo.GetDirectories();

然后搜索每个子文件夹,如果名称是 2014 或 2015 或其他...

于 2015-06-17T15:32:17.853 回答