Создайте список имен файлов в каталоге, измените имя файла, но все равно сможете получить доступ к полному пути winforms - PullRequest
1 голос
/ 09 апреля 2019

Я создаю приложение, используя C # и WinForms. У меня есть код, который рекурсивно проходит по каталогу, чтобы получить имя файла. Затем я изменяю имя файла и отображаю измененное имя в ListBox. Моя проблема в том, что я потерял полный путь. Мне нужно сохранить полный путь для дальнейшей обработки, но не отображается на ListBox.

foreach (string fileName in Directory.GetFiles(path))
{
    String displayedName = "";
    String fullPath = fileName;
    if (fileName.Contains("tsv"))
    {
        try
        {
            //make changes here
        }
        catch (Exception e)
        {
        }
    }
}

foreach (string directory in Directory.GetDirectories(path))
{
    FindFiles(directory);
}

1 Ответ

1 голос
/ 09 апреля 2019

Вот пример того, о чем я говорю.Вы должны иметь возможность включить это в существующий код, поскольку это не что иное, как создание класса, помещение информации в объект, а затем показывает, как его вернуть.Просто добавьте кнопку и список в новый проект и поместите этот код в соответствующие места.

  private void button1_Click(object sender, EventArgs e)
    {
        string DemoPath = @"D:\MyImages\MyPicture.jpg";

        string filestring = Path.GetFileName(DemoPath); //filename only
        string pathstring = Path.GetDirectoryName(DemoPath); //path only
        MyFileInfo nfo = new MyFileInfo(); //instantiate your object
        nfo.fileName = filestring; //fill the properties
        nfo.filePath = pathstring;
        listBox1.Items.Add(nfo); //add it to the listbox (only filename shows)
     }

    private void listBox1_DoubleClick(object sender, EventArgs e)
    {
        //cast the selected item back to the MyFileInfoType and get its filePath
        string pathFromSelection = (listBox1.SelectedItem as MyFileInfo).filePath;
        MessageBox.Show(pathFromSelection);
    }


class MyFileInfo
{
    public string fileName { get; set; }
    public string filePath { get; set; }

    public override string ToString()
    {
        //Here we tell the object to only display the filename
        return fileName;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...