Я использовал List(Of T)
, поэтому мне не пришлось беспокоиться о размере массива. Я сделал 2 списка, один для графических блоков и один для растровых изображений.
Я также добавил FlowLayoutPanel
на вкладку, так что мне не пришлось бы беспокоиться о размещении графических блоков.
Наконец, я перебрал графические блоки, добавив .Image
из списка растровых изображений. Наконец, увеличивайте индекс на каждой итерации.
Эти строки
Dim imgBytes As Byte() = DirectCast(dr("image"), Byte()) 'Image in blob
Dim tc As TypeConverter = TypeDescriptor.GetConverter(GetType(Bitmap))
Dim MyBitmap = CType(tc.ConvertFrom(imgBytes), Bitmap)
Я не проверял, кроме как перейти на DirectCast, который я считаю более быстрым (пропускает некоторую проверку кода). Я предполагаю, что вы знаете о графике гораздо больше, чем я.
Private Sub OPCode()
Dim pics As New List(Of PictureBox)
For index = 0 To dbdataset.Rows.Count - 1
Dim pic As New PictureBox
pic.Name = "PB" & index.ToString
pics.Add(pic)
Next
Dim Bitmaps As New List(Of Bitmap)
For Each dr As DataRow In dbdataset.Rows
Dim imgBytes As Byte() = DirectCast(dr("image"), Byte()) 'Image in blob
Dim tc As TypeConverter = TypeDescriptor.GetConverter(GetType(Bitmap))
Dim MyBitmap = CType(tc.ConvertFrom(imgBytes), Bitmap)
Bitmaps.Add(MyBitmap)
Next
Dim i As Integer
For Each picBox In pics 'Getting the exception here
picBox.Image = Bitmaps(i)
FlowLayoutPanel2.Controls.Add(picBox)
i += 1
Next
End Sub