作为一种更正确和确定的方式,我会获取每个图片框,保留它们的句柄和位置,然后根据它们的位置对它们进行排序。现在它们可以使用了。这是一个例子:
Public Class Form1
Structure Pbox
Dim handle As IntPtr
Dim top As Integer
Dim left As Integer
End Structure
Dim pboxlist As New List(Of Pbox)
Sub ClearImages()
pboxlist.Clear()
For Each c As Control In Me.Controls
If TypeName(c) = "PictureBox" Then
Dim x As New Pbox
x.top = c.Top
x.left = c.Left
x.handle = c.Handle
End If
Next
pboxlist.OrderByDescending(Function(a) a.top).ThenByDescending(Function(a) a.left)
For Each item In pboxlist
Dim x As PictureBox = PictureBox.FromHandle(item.handle)
x.Image = Nothing
Next
End Sub
End Class
另一种方法是使用良好的命名,以便您可以使用它们的名称对它们进行排序。例如,如果您进行排序,PictureBox1 将排在 PictureBox2 之前。因此,您应该将 PictureBox1 用于最顶部和左侧,将 PictureBox2 用于下一个,依此类推...
编辑:使用 Tag 属性,正如 John Bustos 所建议的那样,而不是名称是一个更容易和更好的主意。因此,在不迷失名称的情况下,您可以根据您定义的标签对图片框进行排序。