作爲一個更加正確和可靠的方法,我會得到每個圖片框,保留它們的句柄和位置,然後根據它們的位置對它們進行排序。現在他們已經準備好使用了。這裏有一個例子:
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屬性,如約翰·布斯托斯的建議,而不是名稱是一種更簡單,更好的主意。因此,不要在名字中迷失方向,您可以根據您定義的標籤對圖片框進行排序。
難道要由TabIndex屬性? – George
不,只需要按順序處理它們 –
如何將圖片框添加到窗體中:是通過代碼動態添加還是通過IDE添加?如果動態,那麼我建議使用控制數組。 – George