Vb.net 获取名称首字母相同的所有文件或图像

Vb.net 获取名称首字母相同的所有文件或图像,vb.net,path,listbox,filenames,picturebox,Vb.net,Path,Listbox,Filenames,Picturebox,我有1个带有文件名的列表框,使用以下代码获得: Dim文件作为新列表(字符串) files.AddRange(IO.Directory.GetFiles(Xpath,*.txt))。 选择(函数(f)IO.Path.GetFileNameWithoutExtension(f))) 我想在PictureBox加载一个同名图像列表 示例:如果我在列表框中选择“house”项,我希望获得(用于显示)所有以相同字符串开头的图像。 在此示例中,必须在picturebox中显示文件“houses.jpg”、

我有1个带有文件名的列表框,使用以下代码获得:

Dim文件作为新列表(字符串)
files.AddRange(IO.Directory.GetFiles(Xpath,*.txt))。
选择(函数(f)IO.Path.GetFileNameWithoutExtension(f)))

我想在PictureBox加载一个同名图像列表

示例:如果我在列表框中选择“house”项,我希望获得(用于显示)所有以相同字符串开头的图像。 在此示例中,必须在picturebox中显示文件“houses.jpg”、“house 1.jpg”、“house 2.jpg”、“house 2 beyard.jpg”、“house(4.jpg)”、“house roof.jpg”和找到的任何其他文件(在同一目录中)

如何列出/获取(部分)相同命名的文件?要在PictureBox中使用(我想这必须过滤并排除原始的.txt以避免错误)。这些文件被放入程序路径内的静态文件夹中。使用完全相同的名称加载每个文件的1个图像很容易,我使用:

PictureBox1.image=(Application.StartupPath&“\buildings\”和ListBox1.SelectedItem.ToString&“.jpg”)

但我的purpouse是检测并使用多个具有相同零件名称的图像(如果存在)


也许第一步是创建一个他们的列表。。。但是我不知道。

将字符串添加到ListBox项目集合后,您可以使用Linq轻松检索所需的项目

Dim names = ListBox1.Items.
            Cast(Of String)().
            Where(Function(x) x.StartsWith("house")).ToList()

现在,名称列表中有了以建议的常量开头的项。当然,picturebox一次只显示一个图像,因此您需要迭代此列表(可能使用两个按钮在名称列表中向前或向后移动),然后依次在picturebox中显示图像。

同样,您可以将文件名添加到文件列表框中,而无扩展名。names只是一个字符串列表,因此nameofyourotherlistbox.AddRange(名称)如果需要在表单之间传递此列表,则只需将公共属性添加到类型为list(字符串)的接收表单中即可。抱歉,现在工作很忙。
Private Sub ListBox2\u SelectedIndexChanged(发件人作为对象,e作为事件参数)处理ListBox2.SelectedIndexChanged Dim names=ListBox4.Items。(弦的)铸法。其中(函数(x)x.StartsWith(ListBox2.SelectedItem.ToString)).ToList()ListBox5.Items.AddRange(名称)
是,但我在“AddRange”处出错,它说:类型列表(字符串)的值不能转换为Listbox.ObjectCollectionsResolved!!我将:
x.StartsWith(ListBox2.SelectedItem.ToString)).ToList()
更改为
x.StartsWith(ListBox2.SelectedItem.ToString)).ToArray()
现在可以工作了!!伟大的