一系列图片盒(我做得对吗?)

时间:2013-12-22 07:46:56

标签: vb.net

所以我声明了一个像这样的类范围的图片盒数组:

Dim picArray() As PictureBox = {Me.pic1, Me.pic2, Me.pic3}

其中pic1,pic2和pic3是表格中已有的图片框。

然后按钮事件执行以下操作。

For Each pic As PictureBox In picArray
        pic.Left += 15
    Next

我希望代码在单击按钮时将所有图片框移动到右边,但是发生错误,说我应该将图片框声明为New。我该怎么办?

3 个答案:

答案 0 :(得分:1)

而不是制作pic数组。

为什么你没有以这种方式使用当前表格上已有的图片框:

For Each pic As Control In Me.Controls
    If TypeOf pic Is PictureBox Then
       pic.Left += 15
    End If
Next

如果您想移动所有照片,这将更有帮助

答案 1 :(得分:1)

问题是您将内联数组声明。在这种情况下,数组对象不是任何东西。我自己也不知道为什么。解决方案是在Form.Load事件中初始化数组,如下所示:

Public Class Form1

  Dim pbs() As PictureBox
  Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
      For Each p As PictureBox In pbs
          p.Left += 15
      Next
  End Sub

  Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
      pbs = {Me.PictureBox1, Me.PictureBox2, Me.PictureBox3}
  End Sub

End Class

这很有效。通常很好的创建一个控件数组来快速调整循环中各种类似控件的设置,但我通常只在子文件中本地创建数组。

答案 2 :(得分:0)

您已经拥有表格中的图片框。所以不需要创建图片框数组。如果您正在动态创建控件,那么只有您应该在编码中指定图片框。

使用以下编码移动表单中的所有图片框

   For Each pic As Control In Me.Controls
        If TypeOf (pic) Is PictureBox Then
            pic.Left += 15
        End If
    Next