2011-10-25 2 views
0

Je veux afficher quelques images dans mon viewGridView, donc j'ai créé DataGridViewImageColumn avec l'image par défaut (Properties.Resources.test), l'a ajouté à dataGridView et j'ai essayé d'insérer des valeurs aux cellules. Malheureusement, cela n'a pas changé l'affichage. Qu'est-ce que je fais mal?DataGridViewImageColumn n'affiche pas la valeur - pourquoi?

 var q = from a in _dc.GetTable<Map>() select a; 
     View.dataGridView1.DataSource = q; 
     View.dataGridView1.Columns[3].Visible = false; 

     var imageColumn = new DataGridViewImageColumn 
     { 
      Image = Properties.Resources.test, 
      ImageLayout = DataGridViewImageCellLayout.Stretch, 
      Name = "Map", 
      HeaderText = @"map" 
     }; 
     View.dataGridView1.Columns.Add(imageColumn); 

     var i = 0; 
     foreach (var map in q) 
     { 
      View.dataGridView1.Rows[i].Cells[8].Value = ByteArrayToImage(map.map1.ToArray()); 
      i++; 
     } 
+1

duplication possible de [ne peut pas changer d'image dans Winforms datagridview] (http://stackoverflow.com/questions/6473310/cannot-change-image-in-datagridview-winforms) –

+0

cela est vrai, merci – rebeliagamer

Répondre

1

Comme expliqué dans la question dans le commentaire, vous devez utiliser l'événement CellFormatting comme ceci:

void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) 
{    
    if (dataGridView1.Columns[e.ColumnIndex].Name == "StatusImage") 
    { 
     // Your code would go here - below is just the code I used to test 
     e.Value = Image.FromFile(@"C:\Pictures\TestImage.jpg"); 
    } 
} 

Ainsi e set .Value plutôt que cell.Value et affecte l'image.

0

vous pouvez faire comme ça ...

for(int i = 0; i < dataGridView1.Columns.Count; i ++) 
      if(dataGridView1.Columns[i] is DataGridViewImageColumn) { 
       ((DataGridViewImageColumn)dataGridView1.Columns[i]).ImageLayout = DataGridViewImageCellLayout.Stretch; 
       break; 
      } 
Questions connexes