Visual Basic句柄和具有相同名称的多个变量

时间:2016-05-30 23:25:12

标签: vb.net visual-studio

我已经在Visual Basic中创建了一个程序,通过单击PictureBox来打开文件,但结果,我最终得到了36个图片框,并且处理它们中的每一个都很痛苦,因为它是唯一的我发现参考PictureBox(Nº)的方式 正在制作 Dim pictureBoxes(35) As PictureBox

并将每个设置如下:

pictureBoxes(0) = PictureBox1
pictureBoxes(1) = PictureBox2
pictureBoxes(2) = PictureBox3
...
pictureBoxes(35) = PictureBox36

然后我可以在For循环中使用它:

PictureBoxes(i).Image = iconForFile.ToBitmap()

所以,我的问题是,有没有办法让它更容易引用,而不是那样做? 同样的事情让我想起代码的Handles部分:

Private Sub PictureBox1_Click(sender As Object, e As EventArgs) Handles PictureBox1.Click, PictureBox2.Click, PictureBox3.Click, PictureBox4.Click, PictureBox5.Click, PictureBox6.Click, PictureBox7.Click, PictureBox8.Click, PictureBox9.Click, PictureBox10.Click, PictureBox11.Click, PictureBox12.Click, PictureBox13.Click...

任何亮点都会非常有用,谢谢!

1 个答案:

答案 0 :(得分:1)

我不知道您的控件是如何在表单上构建的,但如果它们是同一个集合的一部分,例如一个流程图,您可以获得某种类型的所有控件。在您的情况下,您希望能够访问单个框,以便您可以执行此操作并将列表存储在列表中,如您所知。

Dim pictureBoxes = FlowLayoutPanel.Controls.OfType(Of PictureBox)().Tolist()
For Each picture in pictureBoxes
    AddHandler picture.Click, AddressOf PictureBox_Click
Next