VB.net - Динамически создаваемый столбец с изображением, не отображающим изображение в новой строке в представлении данных.
Я строю сетку динамически и хочу, чтобы изображение было удалено в качестве последнего отображаемого столбца.
Изображение хорошо отображается в строке, которую я добавляю, но в новой строке нет изображения. Что мне не хватает?
Когда я запускаю следующий код, я получаю одну строку с изображением, а вторую пустую строку со значком "отсутствует изображение":
Public Class Testing
Private dtData As New DataTable
Private Sub Testing_Load(sender As Object, e As EventArgs) Handles MyBase.Load
LoadMyGrid()
End Sub
Private Sub LoadMyGrid()
Try
Dim img As New DataGridViewImageColumn
Dim inImg As Image = My.Resources.delete
img.Image = inImg
dtData.Columns.Add("LanguageId")
dtData.Columns.Add("Language")
dtData.Rows.Add(1, "English")
'--- Load the grid
With Me.dgv1
.Columns.Clear()
.DataSource = dtData
.Columns(0).Visible = False
dgv1.Columns.Add(img)
img.Width = 40
img.Name = "DELETE"
.ClearSelection()
End With
Catch ex As Exception
MsgBox("You hit an error")
End Try
End Sub
End Class
Спасибо за любую помощь!
1 ответ
Добавить переменную для хранения положения столбца DELETE
Private dgv1DeleteCellIndex as integer = -1
В LoadGrid установите dgv1DeleteCellIndex, найдите его перед добавлением столбца DELETE.
dgv1DeleteCellIndex = dgv1.Columns.Count
После добавления столбца DELETE выполните цикл по столбцам и установите значение ячейки для изображения.
For Each row As DataGridViewRow In dgv1.Rows row.Cells(dgv1DeleteCellIndex).Value = My.Resources.delete_16x16 Next
Обновите изображение ячейки в событии RowsAdded, чтобы продолжить обновлять изображение в любых дополнительных новых строках, добавленных пользователем.
Private Sub dgv1_RowsAdded(sender As Object, e As System.Windows.Forms.DataGridViewRowsAddedEventArgs) Handles dgv1.RowsAdded If dgv1DeleteCellIndex <= 1 Then Exit Sub CType(sender, DataGridView).Rows(e.RowIndex).Cells(dgv1DeleteCellIndex).Value = My.Resources.delete_16x16 End Sub