より適切で確実な方法として、各画像ボックスを取得し、それらのハンドルと場所を保持してから、それらの場所に従って並べ替えます。これで、使用する準備が整いました。次に例を示します。
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
もう 1 つの方法は、名前を使用して並べ替えることができるように、適切な名前を付けることです。たとえば、並べ替えると、PictureBox1 が PictureBox2 の前に表示されます。したがって、一番上と左のものには PictureBox1 を使用し、次のものには PictureBox2 を使用する必要があります...
編集: John Bustos が提案したように、名前の代わりに Tag プロパティを使用することは、より簡単でより良いアイデアです。そのため、名前に迷うことなく、自分で定義したタグに従ってピクチャ ボックスを並べ替えることができます。