ListBox Winform вопрос - PullRequest
2 голосов
/ 05 июня 2011

Я использую класс OpenFileDialog, чтобы открыть и отобразить выбранное имя файла.

      List<string> paths;
    private void openFileDialog1_FileOk(object sender, CancelEventArgs e)
    {
         label1.Text = "Now you can save the file paths or remove them from the list above";
         paths.Add(openFileDialog1.FileName);
         listBox1.DataSource=paths ;//Only one file is displayed in the listbox
         Refresh();

    }

Я хочу, чтобы пользователь выбрал несколько файлов и отобразил все файлы, которые он выбрал, в списке, который у меня есть. Проблема в том, что каждый раз отображается только один путь к файлу. Что смешно, так это то, что я думаю, что всякий раз, когда я использую pahts.Add, добавляется новое имя файла, но на самом деле это не так!?!

Ответы [ 2 ]

3 голосов
/ 05 июня 2011

Попробуйте listBox1.DataSource = null; и затем установите его на paths.

Скорее всего, ListBox не обновляется, поскольку источник данных «не изменился». Мы знаем, что содержимое списка изменилось, однако, с точки зрения ListBox, объект такой же.

Другой лучший вариант - использовать BindingList<string>что должно привести к обновлению ListBox всякий раз, когда элементы добавляются без каких-либо дополнительных действий.

2 голосов
/ 05 июня 2011

Вы должны установить Multiselect в вашем файловом диалоге на true и затем использовать свойство FileNames:

private void openFileDialog1_FileOk(object sender, CancelEventArgs e)
{
   string[] files = openFileDialog1.FileNames;
   paths.AddRange(files);
   listBox1.DataSource=paths;
   Refresh();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...