Member 11856456 Ответов: 2

Код продолжает добавлять дополнительные пустые столбцы после первого использования


Так что я, наконец, получил мой код, чтобы сделать близко к тому, что я хочу, чтобы это сделать, спасибо Ричарду. Проблема теперь в том, что код продолжает добавлять дополнительные пустые столбцы к каждой новой строке, которую я добавляю. Если я добавляю 2 картинки в первый раз, все хорошо, но как только я добавляю вторую строку с 2 картинками, она добавляет 2 дополнительных пустых слота столбцов, даже если есть 2 картинки в первой и во второй строке.

ofd.Multiselect = True
       If ofd.ShowDialog() = Windows.Forms.DialogResult.OK Then

           Dim fileCount = ofd.FileNames.Length
           Dim images(fileCount - 1) As Image


           For i As Integer = 0 To fileCount - 1
               Dim col As New DataGridViewImageColumn()
               DataGridView1.Columns.Add(col)

               images(i) = Image.FromFile(ofd.FileNames(i))

               Dim pic As New PictureBox()
               pic.Image = images(i)
               pic.SizeMode = PictureBoxSizeMode.StretchImage
               pic.SetBounds(wid, 20, 200, 100)
               AddHandler pic.Click, AddressOf convertPic
               Me.Panel1.Controls.Add(pic)
               wid += 205

           Next

           PictureBox1.Image = images(fileCount - 1)
           PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage
           DataGridView1.Rows.Add(images)

       End If


Любая помощь в разрешении этой маленькой дилеммы была бы очень кстати.

Что я уже пробовал:

не так уж много, потому что я точно не знаю, как изменить его так, чтобы он добавлял соответствующее количество столбцов.

[no name]

Итак, где же код, который вы проверяете количество столбцов, чтобы не добавлять больше столбцов, если вам это не нужно?

2 Ответов

Рейтинг:
16

Richard Deeming

Вы пропустили if блок от мое решение[^], который я обновил после вашего (теперь удаленного) комментария:

If i >= DataGridView1.Columns.Count Then
    Dim col As New DataGridViewImageColumn()
    col.Width = 200
    DataGridView1.Columns.Add(col)
End If


Рейтинг:
0

Richard MacCutchan

For i As Integer = 0 To fileCount - 1
                Dim col As New DataGridViewImageColumn()
                DataGridView1.Columns.Add(col)

Если это происходит во второй раз, то вы добавляете больше столбцов в свой DataGridView. Таким образом, если у вас уже есть три столбца, и теперь вы вставляете еще три файла, вы получите шесть столбцов. Вам нужно отслеживать количество столбцов в сетке каждый раз, когда вы добавляете новую строку.