Загрузка нескольких файлов без полного пути

Я пытаюсь загрузить несколько файлов и просто получить их имя файла. Когда я пытаюсь это сделать, он просто загружает один файл.

Таким образом, он загружает файлы с полным путем (и это работает).

private void bChooseFolder_Click(object sender, EventArgs e)
{
    CoreClass.OPENDIALOG.Multiselect = true;
    string oldFilter = CoreClass.OPENDIALOG.Filter;
    CoreClass.OPENDIALOG.Filter = "(*.csv) | *.csv";

    if (CoreClass.OPENDIALOG.ShowDialog() == DialogResult.OK)
        tbFolderPath.Text = string.Join(FileSeperator, CoreClass.OPENDIALOG.FileNames);// <-- this works, but here I get the full path

    CoreClass.OPENDIALOG.Filter = oldFilter;
    CoreClass.OPENDIALOG.Multiselect = false;
}

И поэтому я получаю только имя файла, но он загружает только один файл:

private void bChooseFolder_Click(object sender, EventArgs e)
{
    CoreClass.OPENDIALOG.Multiselect = true;
    string oldFilter = CoreClass.OPENDIALOG.Filter;
    CoreClass.OPENDIALOG.Filter = "(*.csv) | *.csv";

    if (CoreClass.OPENDIALOG.ShowDialog() == DialogResult.OK)
        tbFolderPath.Text = string.Join(FileSeperator, System.IO.Path.GetFileNameWithoutExtension(CoreClass.OPENDIALOG.FileName)); // <-- Doesn't work. Just one File.

    CoreClass.OPENDIALOG.Filter = oldFilter;
    CoreClass.OPENDIALOG.Multiselect = false;
}

person Purger86    schedule 02.03.2016    source источник


Ответы (1)


Хорошо, если вы разрабатываете WinForms приложение, вы используете OpenFileDialog, который содержит 2 свойства:

  • FileName получает или задает строку, содержащую имя файла, выбранного в диалоговом окне файла.
  • FileNames получает имена файлов всех выбранных файлов в диалоговом окне.

Тогда первый никогда не будет содержать мало файлов, и вы должны использовать его только в режиме Multiselect = false;.

Если вам нужно показать все имена файлов в одном текстовом поле, вы можете использовать String.Join и LINQ для перечисления коллекции и получения имени файла без расширения для каждого элемента:

if (CoreClass.OPENDIALOG.ShowDialog() == DialogResult.OK)
    tbFolderPath.Text = string.Join(FileSeperator, CoreClass.OPENDIALOG.FileNames.Select(x => System.IO.Path.GetFileNameWithoutExtension(x)).ToArray()); // <-- Doesn't work. Just one File.
person Vadim Martynov    schedule 02.03.2016
comment
Затем я получаю сообщение об ошибке: аргумент 1: невозможно преобразовать строку [] в строку - person Purger86; 02.03.2016
comment
@Tomi, я расширил свой ответ - person Vadim Martynov; 02.03.2016