2016-03-02 3 views
0

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

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

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; 
} 

ответ

1

OK, если вы разрабатываете 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. 
+0

Тогда я получаю ошибку: аргумент 1 : не может преобразовать «string []» в строку – Purger86

+0

@Tomi i расширил мой ответ –

+1

Ничего себе это отлично работает! Благодаря! – Purger86