【问题标题】:Assigning images to a picturebox from an imagelist从图像列表中将图像分配给图片框
【发布时间】:2021-03-11 14:04:35
【问题描述】:

我必须将 16 个随机排列在数组中的图像分配给图片框。我想出了创建一个图像列表然后将它们分配给图片框的想法。 有没有办法缩短这个? 这是我想出的代码:

For i = 0 To FotoArray.Length - 1
                ImageList1.Images.Add(Image.FromFile(FotoArray(i)))
            Next
    
            PictureBox1.Image = ImageList1.Images(0)
        PictureBox2.Image = ImageList1.Images(1)
        PictureBox3.Image = ImageList1.Images(2)
        PictureBox4.Image = ImageList1.Images(3)
        PictureBox5.Image = ImageList1.Images(4)
        PictureBox6.Image = ImageList1.Images(5)
        PictureBox7.Image = ImageList1.Images(6)
        PictureBox8.Image = ImageList1.Images(7)
        PictureBox9.Image = ImageList1.Images(8)
        PictureBox10.Image = ImageList1.Images(9)
        PictureBox11.Image = ImageList1.Images(10)
        PictureBox12.Image = ImageList1.Images(11)
        PictureBox13.Image = ImageList1.Images(12)
        PictureBox14.Image = ImageList1.Images(13)
        PictureBox15.Image = ImageList1.Images(14)
        PictureBox16.Image = ImageList1.Images(15)

也为此

有没有办法为这个标签做同样的事情?

Label1.Tag = FotoArray(0)
Label2.Tag = FotoArray(1)
Label3.Tag = FotoArray(2)
Label4.Tag = FotoArray(3)
Label5.Tag = FotoArray(4)
Label6.Tag = FotoArray(5)
Label7.Tag = FotoArray(6)
Label8.Tag = FotoArray(7)
Label9.Tag = FotoArray(8)
Label10.Tag = FotoArray(9)
Label11.Tag = FotoArray(10)
Label12.Tag = FotoArray(11)
Label16.Tag = FotoArray(12)
Label13.Tag = FotoArray(13)
Label15.Tag = FotoArray(14)
Label14.Tag = FotoArray(15)

【问题讨论】:

  • 这是用于 WinForms 还是其他平台?
  • 适用于 Windows Forms App(.NET Framework) - Visual Basic
  • 你可以使用我在下面给出的答案,将PictureBox替换为Label,然后使用FotoArray而不是ImageList

标签: arrays vb.net imagelist


【解决方案1】:

您可以使用OfType Linq extension method 来帮助使代码简洁,例如:

    Dim pictureBoxes As List(Of PictureBox) = Me.Controls.OfType(Of PictureBox).ToList()

    For counter As Integer = 0 To pictureBoxes.Count - 1
        Dim pb As PictureBox = pictureBoxes(counter)
        pb.Image = ImageList1.Images(counter)
    Next

来自 MSDN:

根据指定类型过滤 IEnumerable 的元素。

【讨论】:

  • 非常感谢你。它解决了我的问题。这是一种有趣的方法,我不知道它存在。
  • @Zarb 很高兴能提供帮助。 Linq 中有很多功能可以以各种富有想象力的方式使用,从而使您的编码任务更加轻松
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-15
  • 2014-12-27
  • 2015-12-31
  • 2018-07-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多