在c#的列表框中从目录路径中去掉前导字符

本文关键字:路径 字符 列表 | 更新日期: 2023-09-27 18:11:32

所以我试图自学c#,我有一个程序,我最初在批处理中编写,并试图使用WPF在c#中重新创建。我有一个按钮,允许用户设置一个目录,选择的目录,然后显示在一个列表框上面的文本框中,其中添加了每个子文件夹,只有第一级,到列表框。现在所有这些都工作得很好,但是它会在列表框中写出整个目录路径。我一直在试图找出如何从列表框条目中剥离主要目录路径一个多小时,但无济于事。以下是目前为止的内容:

    private void btn_SetDirectory_Click(object sender, RoutedEventArgs e)
    {
        //Create a folder browser dialog and set the selected path to "steamPath"
        var steamPath = new FolderBrowserDialog();
        DialogResult result = steamPath.ShowDialog();
        //Update the text box to reflect the selected folder path
        txt_SteamDirectory.Text = steamPath.SelectedPath;
        //Clear and update the list box after choosing a folder
        lb_FromFolder.Items.Clear();
        string folderName = steamPath.SelectedPath;
        foreach (string f in Directory.GetDirectories(folderName))
            {
                lb_FromFolder.Items.Add(f);
            }
    }

现在我试着把最后一行改成这个,它不起作用,它只是崩溃了程序:

    foreach (string f in Directory.GetDirectories(folderName))
    {
        lb_FromFolder.Items.Add(f.Substring(f.LastIndexOf("'''")));
    }

我相当肯定,LastIndexOf路线可能是正确的,但我在一个死胡同。如果这是一个愚蠢的问题,我很抱歉,但这是我第一次尝试使用c#。

在c#的列表框中从目录路径中去掉前导字符

这可以解决您的问题

 string folderName = steamPath.SelectedPath;
    foreach (string f in Directory.GetDirectories(folderName))
    {
       // string[] strArr = f.Split('''');
        lb_FromFolder.Items.Add(f.Split('''')[f.Split('''').Length-1]);
    }

您可以使用以下代码:

string folderName = steamPath.SelectedPath;
foreach (string f in Directory.GetDirectories(folderName))
{
  lb_FromFolder.Items.Add(f.Remove(0,folderName.Length));
}