如何在c#.net windows aplication中的datagridview多行中显示图像? [英] How to display image in datagridview multiple rows in c# .net windows aplication?

查看:85
本文介绍了如何在c#.net windows aplication中的datagridview多行中显示图像?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

您好,



我使用此代码进行图像显示,但所有行都显示相同的图像,但每行的图像都不同。

  private   void  CreateColumns()
{
DataGridViewImageColumn imageColumn;
位图bmpImage = null ;
imageColumn = new DataGridViewImageColumn();

for int i = 0 ; i < dgvDisplayTiles.Rows.Count; i ++)
{

bmpImage =(Bitmap) Image.FromFile(Application.StartupPath + dgvDisplayTiles.Rows [i] .Cells [ 3 ]。Value.ToString(),);
imageColumn.Image = bmpImage;
imageColumn.ImageLayout = DataGridViewImageCellLayout.Stretch;

// dgvDisplayTiles.Rows.Add();
dgvDisplayTiles.Rows [i] .Cells [ 3 ]。Value = bmpImage;
dgvDisplayTiles.Rows [i] .Height = 100 ;

}
dgvDisplayTiles.Columns.Add(imageColumn);

}



请帮助我,如何在所有行中显示不同类型的图像。



先谢谢。



Ankit Agarwal

软件工程师

解决方案

您正在将每个加载的图像分配给相同的值imageColumn.Image,然后尝试将bmpImage分配给dgvDisplayTiles.Rows [i] .Cells [3]。值可能是TextColumn(不好)。在循环之前将imageColumn添加到dgvDisplayTiles。将分配删除为imageColumn.Image

然后将作业更改为:

 dgvDisplayTiles.Rows [i] .Cells [imageColumn.DisplayIndex] .Value = bmpImage; 


使用以下for循环开始一个新循环或在for循环开始时为bmpImage分配值之前



 bmpImage.dispose(); 









 bmpImage =  null ; 


Hey Ankit试试这个,

 私人  void  CreateColumns()
{
var imageColumn = new DataGridViewImageColumn();

object dgvDisplayTiles;
for var i = 0 ; i < dgvDisplayTiles.Rows.Count; i ++)
{
var bmpImage =(Bitmap)Image.FromFile(Application.StartupPath + dgvDisplayTiles.Rows [i] .Cells [ 3 ]。Value.ToString(),);
imageColumn.Image = bmpImage;
imageColumn.ImageLayout = DataGridViewImageCellLayout.Stretch;
imageColumn.Dispose();
// dgvDisplayTiles.Rows.Add();
dgvDisplayTiles.Rows [ i] .Cells [ 3 ]。Value = bmpImage;
dgvDisplayTiles.Rows [i] .Height = 100 ;
dgvDisplayTiles.Columns.Add(imageColumn);

}
}


Hello,

I am using this code for image display but same images are displaying in all rows, but my images are different for every row.

private void CreateColumns()
        {
            DataGridViewImageColumn imageColumn;
            Bitmap bmpImage = null;
            imageColumn = new DataGridViewImageColumn();
            
            for (int i = 0; i < dgvDisplayTiles.Rows.Count;i++ )
            {

                bmpImage = (Bitmap)Image.FromFile(Application.StartupPath + dgvDisplayTiles.Rows[i].Cells[3].Value.ToString(), true);
                imageColumn.Image = bmpImage;
                imageColumn.ImageLayout = DataGridViewImageCellLayout.Stretch;
                
                //dgvDisplayTiles.Rows.Add();
                dgvDisplayTiles.Rows[i].Cells[3].Value = bmpImage;
                dgvDisplayTiles.Rows[i].Height = 100;
                
            }
            dgvDisplayTiles.Columns.Add(imageColumn);

        }


Please help me, how can display different type of images in all rows.

Thanks in Advance.

Ankit Agarwal
Software Engineer

解决方案

You are assigning each loaded image to the same value "imageColumn.Image" and then trying to assign bmpImage to dgvDisplayTiles.Rows[i].Cells[3].Value that presumably is a TextColumn (not good). Add imageColumn to the dgvDisplayTiles before your loop. Delete the assigment to "imageColumn.Image"
Then change your assignment to:

dgvDisplayTiles.Rows[i].Cells[imageColumn.DisplayIndex].Value = bmpImage;


use following before for loop start a new loop or before assigning a value to bmpImage in starts of for loop

bmpImage.dispose();



or

bmpImage = null;


Hey Ankit try This,

private void CreateColumns()
    {
        var imageColumn = new DataGridViewImageColumn();

        object dgvDisplayTiles;
        for (var i = 0; i < dgvDisplayTiles.Rows.Count; i++)
        {
            var bmpImage = (Bitmap)Image.FromFile(Application.StartupPath + dgvDisplayTiles.Rows[i].Cells[3].Value.ToString(), true);
            imageColumn.Image = bmpImage;
            imageColumn.ImageLayout = DataGridViewImageCellLayout.Stretch;
            imageColumn.Dispose();
            //dgvDisplayTiles.Rows.Add();
            dgvDisplayTiles.Rows[i].Cells[3].Value = bmpImage;
            dgvDisplayTiles.Rows[i].Height = 100;
            dgvDisplayTiles.Columns.Add(imageColumn);
            
        }
    }


这篇关于如何在c#.net windows aplication中的datagridview多行中显示图像?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆