簡體   English   中英

VB.net-動態創建的列,其中的圖像未在datagridview的新行中顯示圖像

[英]VB.net - Dynamically created column with an Image not displaying image in new row in datagridview

我正在動態構建網格,並希望將刪除圖像作為最后顯示的列。

我添加的行上的圖像顯示正常,但是新行沒有該圖像。 我想念什么?

當我運行以下代碼時,我將在圖像中顯示一行,而在第二個空白行中顯示“缺少圖像”圖標:

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 
  2. 在LoadGrid中,設置dgv1DeleteCellIndex,在添加DELETE列之前找到它

      dgv1DeleteCellIndex = dgv1.Columns.Count 
  3. 添加DELETE列后,遍歷各列,並將單元格值設置為圖像

     For Each row As DataGridViewRow In dgv1.Rows row.Cells(dgv1DeleteCellIndex).Value = My.Resources.delete_16x16 Next 
  4. 在“行添加”事件上更新單元格圖像,以繼續更新用戶添加的任何其他新行上的圖像。

     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 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM