我想在我的dataGridView中显示一些图像,所以我创建了带有默认图像(Properties.Resources.test)的DataGridViewImageColumn,将其添加到dataGridView中,并尝试在单元格中插入一些值。不幸的是,它并没有改变显示。我做错了什么?
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++;
}发布于 2011-10-25 23:59:50
正如注释中的问题所解释的,您需要像这样使用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并分配图像。
发布于 2011-10-25 22:27:25
你可以这样做...
for(int i = 0; i < dataGridView1.Columns.Count; i ++)
if(dataGridView1.Columns[i] is DataGridViewImageColumn) {
((DataGridViewImageColumn)dataGridView1.Columns[i]).ImageLayout = DataGridViewImageCellLayout.Stretch;
break;
}https://stackoverflow.com/questions/7890670
复制相似问题