【问题标题】:Get all files or images with the same initial part of the name获取名称开头部分相同的所有文件或图像
【发布时间】:2018-02-07 21:54:20
【问题描述】:

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

Dim files As New List(Of String) files.AddRange(IO.Directory.GetFiles(Xpath, "*.txt"). Select(Function(f) IO.Path.GetFileNameWithoutExtension(f)))

我想在 PictureBox 中加载具有相同初始名称的图像列表。

示例:如果我在 ListBox 中选择“house”项,我想获取(用于显示)以相同字符串开头的所有图像。 在此示例中,文件“houses.jpg”、“house 1.jpg”、“house 2.jpg”、“house 2 backyard.jpg”、“house(4).jpg”、“houseroof.jpg”等找到(在同一目录上)必须显示在图片框...

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

PictureBox1.image = (Application.StartupPath & "\buildings\" & ListBox1.SelectedItem.ToString & ".jpg")

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

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

【问题讨论】:

    标签: vb.net path listbox filenames picturebox


    【解决方案1】:

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

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

    现在您在 names 列表中拥有了以建议的常量开头的项目。当然,一个图片框一次只显示一个图像,因此您可以遍历此列表(可能使用几个按钮在名称列表中向前或向后移动),然后在您的图片框中显示图像其他。

    【讨论】:

    • 以同样的方式将不带扩展名的文件名添加到文件列表框中。 names 只是一个字符串列表,所以 nameofyourotherlistbox.AddRange(names) 如果你需要在表单之间传递这个列表,那么你应该简单地在接收表单中添加一个公共属性类型列表(字符串)。抱歉,现在工作很忙。
    • Private Sub ListBox2_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListBox2.SelectedIndexChanged Dim names = ListBox4.Items. Cast(Of String)(). Where(Function(x) x.StartsWith(ListBox2.SelectedItem.ToString)).ToList() ListBox5.Items.AddRange(names) 是的,但是,我在“addrange”处出现错误,它说:list(of string) 类型的值不能转换为 Listbox.objectcollection
    • 解决了!!我将:x.StartsWith(ListBox2.SelectedItem.ToString)).ToList() 更改为 x.StartsWith(ListBox2.SelectedItem.ToString)).ToArray() 现在可以使用了!!太好了!
    猜你喜欢
    • 1970-01-01
    • 2019-05-08
    • 1970-01-01
    • 1970-01-01
    • 2019-10-04
    • 2021-11-24
    • 2020-10-20
    • 1970-01-01
    • 2012-10-24
    相关资源
    最近更新 更多