如何将窗体上的每个 PictureBox 加载到数组中?
How do you load every PictureBox on a form into an array?
我目前正在尝试找到一种方法来更改表单上的每个 PictureBox 以具有相同的图像。
我已经实现了这个,但是它很乱,我想知道是否有 'cleaner' 方法来做到这一点(因为我稍后需要在我的项目中动态填充 PictureBox 数组)。
Dim pbxCollection() As PictureBox = {PictureBox1, PictureBox2, PictureBox3, PictureBox4, PictureBox5, PictureBox6, PictureBox7, PictureBox8, PictureBox9} 'collection of all pictureboxes
For Each pbx In pbxCollection 'iterates through the PictureBox array and changes each value
pbx.Image = My.Resources.<image file name here>
Next
上面的代码完成了我想要的,但是如您所见,我有 9 个图片框。将来我需要有最多 50 个任意数量的 PictureBox,所以这个解决方案将不再有效。
如果有办法将窗体上的每个图片框都填充到数组中,将不胜感激。
谢谢。
不要使用数组,使用 IEnumerable
:
Dim pbxCollection = MyForm.Controls.OfType(Of PictureBox)()
当然这不是递归的,所以如果有一个面板或组框你想考虑使用它而不是 MyForm
。另外,请确保 运行 在 InitializeComponent()
方法之后 。
来自评论:
I'm using a tableLayoutPanel
所以假设名称为 tableLayoutPanel1
,它可能看起来像这样:
Dim pbxCollection = tableLayoutPanel1.Controls.OfType(Of PictureBox)()
我目前正在尝试找到一种方法来更改表单上的每个 PictureBox 以具有相同的图像。 我已经实现了这个,但是它很乱,我想知道是否有 'cleaner' 方法来做到这一点(因为我稍后需要在我的项目中动态填充 PictureBox 数组)。
Dim pbxCollection() As PictureBox = {PictureBox1, PictureBox2, PictureBox3, PictureBox4, PictureBox5, PictureBox6, PictureBox7, PictureBox8, PictureBox9} 'collection of all pictureboxes
For Each pbx In pbxCollection 'iterates through the PictureBox array and changes each value
pbx.Image = My.Resources.<image file name here>
Next
上面的代码完成了我想要的,但是如您所见,我有 9 个图片框。将来我需要有最多 50 个任意数量的 PictureBox,所以这个解决方案将不再有效。
如果有办法将窗体上的每个图片框都填充到数组中,将不胜感激。
谢谢。
不要使用数组,使用 IEnumerable
:
Dim pbxCollection = MyForm.Controls.OfType(Of PictureBox)()
当然这不是递归的,所以如果有一个面板或组框你想考虑使用它而不是 MyForm
。另外,请确保 运行 在 InitializeComponent()
方法之后 。
来自评论:
I'm using a
tableLayoutPanel
所以假设名称为 tableLayoutPanel1
,它可能看起来像这样:
Dim pbxCollection = tableLayoutPanel1.Controls.OfType(Of PictureBox)()