Я заполняю список из a OpenFileDialog
и помещаю его в «файл», а затем помещаю его в список следующим образом:
foreach (string file in selectedFiles)
{
ListBoxItem lstItem = new ListBoxItem();
lstItem.Content = file; //File es la cadena de la URL
miLista.Items.Add(lstItem);
}
Что я назначаю типу ListBox
areURL
c:\пользователь\paco\image1.jpg
c:\пользователь\paco\image2.jpg
Пока все хорошо, но теперь мне нужно пройти через это ListBox
и поместить его элементы вString[]
String[] matriz = new String[miLista.Items.Count];
foreach (Object index in miLista.Items)
{
matriz = index.ToString().Split();
}
Таким образом, в каждом индексе я получаю string[]
следующее:
System.Windows.Controls.ListBoxItem: c:\user\cucumber\image1.jpg System.Windows.Controls.ListBoxItem: c:\user\cucumber\image2.jpg System.Windows.Controls.ListBoxItem: c:\user\cucumber \image3.jpg
Мне нужно только то URL
, что он не возвращает тип и значение, мне нужно поместить String[]
в него только значение.
Заполняю ListBox
так:
OpenFileDialog myFD = new OpenFileDialog();
myFD.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyPictures);
myFD.Multiselect = true;
myFD.Title = "Seleccione uno o más archivos";
myFD.Filter = "Archivos imagen (*.jpg),(*.jpeg),(*.gif),(*.png)|*.jpg;*.jpeg;*.gif;*.png";
Nullable<bool> result = myFD.ShowDialog();
if (result == true)
{
string[] selectedFiles = myFD.FileNames; // La propiedad FileNames (o FileName) almacena la ruta, nombre y extensión.
foreach (string file in selectedFiles)
{
miLista.Items.Add(file);
}
archivo.set_listaReproduccion(selectedFiles);
archivo.grabar();
}
Проблема у вас в этом фрагменте кода:
Одним из решений было бы заменить эту строку и использовать предложения, которые мы дали вам ранее:
По
Но если вам нужно,
lstItem
чтобы он остался в коллекцииlistbox.Items
, все, что вам нужно сделать, это отлить.Предполагая, что вы загружаете свой список таким образом, у вас не должно возникнуть проблем с кастингом:
Обратите внимание, что
FileNames
это ужеString[]
практически не нужно делать ни присваивать,copy
ниfor
присваивать:Но в любом случае я собираюсь оставить ниже способы сделать это, так что это может быть полезно другим людям.
Самый простой вариант:
Но вы также можете сделать это, используя цикл
for
вместоforeach
Вы можете попробовать использовать:
А потом:
При этом у вас есть массив
string
со всеми значениями.РЕДАКТИРОВАТЬ: я уточняю, что
Cast<string>()
в этом нет необходимости, поскольку мы добавляем элементы типаstring
в список.Если вышеизложенное не работает для вас, вы можете попробовать объединить ответ Алана и этот:
Это должно работать, так как у вас есть элементы строки типа внутри
ListBox.Items
Иногда порядок инструкций может быть неправильным, но он может работать в любом случае.
Здесь я оставляю вам ответ от SO, где я нашел что-то подобное, привет!