2016-05-26 3 views
2

Я пытаюсь загрузить картинку в DataGridView, но все ячейки отображается в «System Нарисованные Bitmap» вы можете помочь?DataGridView изображение просто отображает «System.Drawing.Bitmap»

DataGridPhoto.Columns.Clear() 
    DataGridPhoto.Columns.Add("Name", "Name") 
    DataGridPhoto.Columns.Add("Form", "Form") 
    DataGridPhoto.Columns.Add("Admision", "Addmision") 
    DataGridPhoto.Columns.Add("Photo", "Photo") 

    DataGridPhoto.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells 
    DataGridPhoto.Columns(0).DefaultCellStyle.WrapMode = DataGridViewTriState.True 
    DataGridPhoto.Columns(1).DefaultCellStyle.WrapMode = DataGridViewTriState.True 
    DataGridPhoto.Columns(2).DefaultCellStyle.WrapMode = DataGridViewTriState.True 
    DataGridPhoto.Columns(3).DefaultCellStyle.WrapMode = DataGridViewTriState.True 
    DataGridPhoto.Columns(0).Width = 150 
    DataGridPhoto.Columns(1).Width = 50 
    DataGridPhoto.Columns(2).Width = 50 
    DataGridPhoto.Columns(3).Width = 100 

    butPrint.Enabled = True 
    For nLoop = 1 To NoOfLabels 
     Dim n As Integer = DataGridPhoto.Rows.Add() 
     DataGridPhoto.Rows(n).Cells("Name").Value = PrnStudentDetails(nLoop, 1) + " " + PrnStudentDetails(nLoop, 2) 

     DataGridPhoto.Rows(n).Cells("Form").Value = PrnStudentDetails(nLoop, 3) 
     DataGridPhoto.Rows(n).Cells("Admision").Value = PrnStudentDetails(nLoop, 4) 
     Dim cPictureFilename As String 
     cPictureFilename = AppPath & "\Photographs\" & PrnStudentDetails(nLoop, 4) & ".jpg" 
     If File.Exists(cPictureFilename) Then 
      DataGridPhoto.Rows(n).Cells("Photo").Value = Image.FromFile(cPictureFilename) 
     End If 

    Next 

Я предполагаю, что я должен сказать ячейке, что это фотография, но не могу найти, как это сделать.

Привет Грэхэм

ответ

3

Есть несколько различных типов колонн DGV (DataGridViewComboBoxColumn, DataGridViewCheckBoxColumn и т.д.). Ваш код добавляет значение по умолчанию DataGridViewTextBoxColumn, которое не сможет отобразить изображение.

Dim dc As New DataGridViewImageColumn() With {.HeaderText = "Photo", .Name = "Photo"} 
dgv2.Columns.Add(dc) 

dgv2.Rows.Add(1) 
dgv2.Rows(0).Cells(0).Value = Image.FromFile("C:\Temp\London.jpg") 

Или:

dgv2.Columns.Add(New DataGridViewImageColumn() With {.HeaderText = "Photo", 
                .Name = "Photo"}) 
... 

Вы также можете установить ImageLayout свойство автоматически изменять размер каждого/все изображения. Я не уверен, почему вы очищаете столбцы, если не нужно определять совершенно другую компоновку столбцов. Чтобы удалить старые данные, вы можете просто очистить строки.

+0

Я знал, что я должен был определить столбец как столбец изображения, но все, что я пытался просто не удалось, и не работал. Большое спасибо за Вашу помощь. Я очищаю столбцы, потому что так я показал, как делать сетку данных, я очищаю столбцы и просто переделываю сетку с нуля. Никогда не думал просто удалять строки! –

Смежные вопросы