Файлы и папки

Пишу плеер и сталкнулся со следующей проблемой. Знаю код добавления файлов. Но при этом надо выделять каждый файл и перетаскивать его в listBox1
        private void button3_Click(object sender, EventArgs e)
        {
            if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                files = openFileDialog1.SafeFileNames;
                paths = openFileDialog1.FileNames;
                for (int i = 0; i < files.Length; i++)
                {
                    listBox1.Items.Add(files[i]);
                }
            }
        }
Ну а если в папке файлов 500 и все их необходимо добавить вlistBox1 - очень муторное дело. Кто подскажет как добавить все содержимое выбранной папки в listBox1. Только прошу не ругайте чайника.
6 ответов

            System.IO.************* CertificateFiles = new System.IO.*************("D:\\");//указание директории
            System.IO.FileInfo[] files2 = CertificateFiles.GetFiles();//все файлы в директории
 
            foreach (var b in files2)
            {
                LoadDocListBox.Items.Add(b);//добавляем в листбокс имена всех файлов из директории
            }


Спасибо сейчас буду пробовать. Вот еще Нашел другой способ он работает
        private void button3_Click(object sender, EventArgs e)
        {
            FolderBrowserDialog theFBD = new FolderBrowserDialog();
            if (theFBD.ShowDialog() == DialogResult.OK)
            {
                foreach (string currentFile in System.IO.Directory.GetFiles(theFBD.SelectedPath))
                {
                    this.listBox1.Items.Add(currentFile);
                }
            }
        }
Спасибо! Все работает в обоих вариантах. Теперь вопрос встал как убрать из listBox отображение пути к файли и оставить в списке только название файла.


В моем примере ты как раз и получаешь имена фалов, а не путьЕсли у тебя, например в filename лежит полный путь к файлу, то ты можешь его разпарсить
string[] fname = filename.Split('\');
в итоге получишь массив строк, в котором последний элемент и будет имя файла


В твоем случае необходимо указывать конкретную деррикторию из которой и будут грузиться файлы. В случае который я нашел из другого источника есть возможность выбора папки загрузки. Попробовал тупо вставить твой код для удаления пути и получил две ошибки. 1. filename не существует в текущем контексте. 2. ('\'); - символ новой строки в константе. вторую ошибку если не ошибаюсь можно победить так (@"\") а вот что делать с первой ошибкой ума не приложу. А может я просто не туда вставил код? Ну что тут поделаешь я начинающий чайник.


Для указания обратного слеша в C# нужно использовать escape-символ - '\'. То есть, чтобы указать в строке обратный слеш надо сделать так: "\\".


Для работы с путями удобен класс Path. Можно фильтровать имя, расширение, путь, относительный и тд...