C# 解析对象中的路径以提取其中的特定文件夹

C# 解析对象中的路径以提取其中的特定文件夹,c#,wpf,datagrid,C#,Wpf,Datagrid,您好,我创建了一个WPF应用程序,它从文件浏览器中显示datagrid中的文件列表,然后用户可以通过选择datagrid中的行来选择文件。单击按钮,用户可以获取文件的路径(存储文件的文件夹)。我的默认文件路径是H:\Temp\Directory\Sample\Projects,我创建了一个对象 var Form = new Example.Form() { Path = Path.GetFileNameWithout

您好,我创建了一个WPF应用程序,它从文件浏览器中显示datagrid中的文件列表,然后用户可以通过选择datagrid中的行来选择文件。单击按钮,用户可以获取文件的路径(存储文件的文件夹)。我的默认文件路径是H:\Temp\Directory\Sample\Projects,我创建了一个对象

    var Form = new Example.Form()
                {
                    Path = Path.GetFileNameWithoutExtension(fldDlg.SelectedPath),
                    Title = string.Empty
                };

                formlist.Add(Form);
我想将项目设置为根文件夹,因为它包含我要显示的文件,但项目文件夹中还有子文件夹,其中包含相同类型的其他文件。因此,我想解析表单对象中的路径,以便以以下方式构建它:

File1.rpt

子文件夹1\子文件夹2\file2.rpt

其中项目必须设置为根文件夹

因此,我需要以下问题的帮助:

  • 将项目设置为根文件夹
  • 解析对象中的路径,使其以我上面提到的格式构建
  • 网格中的路径类似于H:\Temp\Directory\Sample\Projects\File1.rpt或H:\Temp\Directory\Sample\Projects\Subfolder1\subfolder2\file2.rpt,因此我想获取项目后面的所有内容
  • 1

    我会自己添加根路径。(这样我就不会被固定在1个基本路径上)

    但是如果你真的想,你可以用

    2和3

    我将从路径中删除根文件夹名称:

    比如:

    string path =     @"H:\Temp\Directory\Sample\Projects\Subfolder1\Subfolder2\file2.rpt";
    string rootPath = @"H:\Temp\Directory\Sample\Projects\";
    
    // check check, double check...
    if(path.StartsWith(rootPath))
    {
        subPath = path.Substring(rootPath.Length);
    }
    
    给出:

    Subfolder1\Subfolder2\file2.rpt
    

    所以,如果我想获取一个报告文件,比如file1.rpt,它直接位于Projects文件夹中,那么我也必须将其硬编码到字符串路径中?我不建议硬编码字符串。您应该将这些基本路径放在配置文件中。上面的例子只是一个例子,不是一个解决方案。