Member 11396175 Ответов: 3

Combobox и listbox папки и файлы


Доброе утро
Я думаю, что мой вопрос очень прост для вашего опыта
один combobox с определенным путем дайте мне папки, которые есть в нем
Я хочу, чтобы при выборе одной папки из выпадающего списка файлы в папке помещались в поле списка.

Что я уже пробовал:

private void Form1_Load(object sender, EventArgs e)
{
    DirectoryInfo obj = new DirectoryInfo(@"C:\");
    DirectoryInfo[] folders = obj.GetDirectories();
    comboBox1.DataSource = folders;            
}

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    // ???     
}

BillWoodruff

Возможно, теперь у вас есть то, что вам нужно, однако я хотел бы предложить вам использовать TreeView для представления возможных вложенных структур каталогов. Если вы хотите увидеть какой-то код для этого: просто спросите.

TheRealSteveJudge

Это блестящая идея!

3 Ответов

Рейтинг:
27

TheRealSteveJudge

Прежде всего, вы должны бросить "отправитель", который является просто объектом
в "ComboBox".
Затем вы должны получить "SelectedValue".
Наконец, вы должны получить файлы, которые находятся в выбранном каталоге, и использовать его в качестве источника данных для списка.

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    var comboBox = (ComboBox) sender;

    var directoryInfo = comboBox.SelectedValue as DirectoryInfo;

    if(directoryInfo == null) return;

    var filenames = Directory.GetFiles(directoryInfo.FullName);

    listBox1.DataSource = filenames;

    var shortFilenames = filenames.Select(x => Path.GetFileName(x)).ToList();

    listBox1.DataSource = shortFilenames;
}


Member 11396175

Спасибо за быстрый ответ
код работает, но в списке результатов есть c:\bla бла-бла...
мне нужно только имя файла а не весь путь

TheRealSteveJudge

Пожалуйста, взгляните на обновленное решение.

Member 11396175

Большое вам спасибо за вашу помощь.

TheRealSteveJudge

Всегда пожалуйста!

BillWoodruff

+5

TheRealSteveJudge

Спасибо, Билл!

Рейтинг:
2

Sandeep Mewara

Код в combobox выбранное изменение будет примерно таким:

String[] files = System.IO.Directory.GetFiles("combobox selected path of folder");
for (i = 0; i < files.Length; i++)
{
    listBox1.Items.Add(files[i]);
}

попробуйте!

Ссылка Обновлена: Каталог.Метод GetFiles (System.IO) | Microsoft Docs[^]


Рейтинг:
1

BillWoodruff

+5 необоснованное вниз-голосование отменяется.

Richard MacCutchan

Спасибо, Билл.