我从 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:\user\paco\image1.jpg
c:\用户\paco\image2.jpg
到目前为止一切顺利,但现在我需要遍历它ListBox
并将其 Items 放入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
到列表中。如果上述方法对您不起作用,您可以尝试将 Alan 的答案和这个答案结合起来:
这应该可以工作,因为里面有字符串类型的元素
ListBox.Items
有时指令的顺序可能是错误的,但无论哪种方式都可以。
在这里,我把 SO 的回复留给你,在那里我发现了类似的东西,问候!