DataGridViewImageColumn не отображает значение - почему? - PullRequest
0 голосов
/ 25 октября 2011

Я хочу отобразить некоторые изображения в моем dataGridView, поэтому я создал DataGridViewImageColumn с изображением по умолчанию (Properties.Resources.test), добавил его к 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++;
        }

Ответы [ 2 ]

1 голос
/ 25 октября 2011

Как объяснено в вопросе в комментарии, вам нужно использовать событие 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 голосов
/ 25 октября 2011

вы можете сделать так ...

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