首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DataGridViewImageColumn不显示该值-为什么?

DataGridViewImageColumn不显示该值-为什么?
EN

Stack Overflow用户
提问于 2011-10-25 22:15:09
回答 2查看 3.1K关注 0票数 0

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

代码语言:javascript
复制
        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++;
        }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-25 23:59:50

正如注释中的问题所解释的,您需要像这样使用CellFormatting事件:

代码语言:javascript
复制
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并分配图像。

票数 1
EN

Stack Overflow用户

发布于 2011-10-25 22:27:25

你可以这样做...

代码语言:javascript
复制
 for(int i = 0; i < dataGridView1.Columns.Count; i ++)
            if(dataGridView1.Columns[i] is DataGridViewImageColumn) {
                ((DataGridViewImageColumn)dataGridView1.Columns[i]).ImageLayout = DataGridViewImageCellLayout.Stretch;
                break;
            }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7890670

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档