2011-10-25 56 views
0

我想在我的dataGridView中显示一些图像,所以我创建了带默认图像的DataGridViewImageColumnProperties.Resources.test),将它添加到dataGridView,并尝试将一些值插入单元格。不幸的是,它没有改变显示器。我究竟做错了什么?DataGridViewImageColumn不显示值 - 为什么?

 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

可能重复[无法更改datagridview中的图像winforms](http://stackoverflow.com/questions/6473310/cannot-change-image-in-datagridview-winforms) –

+0

这是真的,谢谢 – rebeliagamer

回答

1

正如在评论这个问题解释你需要使用CellFormatting事件,像这样:

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"); 
    } 
} 

所以集E .Value而不是cell.Value并分配图像。

0

你可以做这样的...

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