C# winform 关于datagridview显示图片的问题

li_hong_0808 2011-11-11 02:26:23
datagridview绑定了数据表friends,数据表里面有“image”列,保存的是图片的绝对路径,我想在datagridview将这些路径显示成图片,该怎么做呢?
...全文
629 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
sdl2005lyx 2011-11-13
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 li_hong_0808 的回复:]
要用到模板列吗?我试了之后,还是显示红色X
能直接用数据库里面的列吗?该怎么用Image?
谢谢!
[/Quote]

说得没错,要使用模板列,准确的说是单元格模块:

1、先扩展定义自己要使用的单元格类:

public class DataGridViewTextBoxCellEx : DataGridViewTextBoxCell
{
public DataGridViewTextBoxCellEx()
{
}

protected override void Paint(System.Drawing.Graphics graphics, System.Drawing.Rectangle clipBounds, System.Drawing.Rectangle cellBounds, int rowIndex, DataGridViewElementStates cellState, object value, object formattedValue, string errorText, DataGridViewCellStyle cellStyle, DataGridViewAdvancedBorderStyle advancedBorderStyle, DataGridViewPaintParts paintParts)
{
//base.Paint(graphics, clipBounds, cellBounds, rowIndex, cellState, value, formattedValue, errorText, cellStyle, advancedBorderStyle, paintParts);

if (value != null && value.ToString() != "")
{
Image img=Image.FromFile(value.ToString());
if(img!=null)
{
graphics.DrawImage(img, cellBounds);
}
}
}
}


2、更改列的CellTemplate 属性 :

DataGridViewColumn column = dataGridView1.Columns[1];//换成你实际的列
DataGridViewCell cell =new DataGridViewTextBoxCellEx();
column.CellTemplate = cell;


这样就OK了。。。。
li_hong_0808 2011-11-11
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 feng_3630 的回复:]
datagridview中图片那一列格式设置为DataGridViewImageColumn 加载数据的时候,图片那一列把读出来的路径赋值给那一列 Image.FromFile(图片路径)
[/Quote]

怎么把datagridview中图片那一列格式设置为DataGridViewImageColumn ?是不要显示数据库的列而添加
DataGridViewImageColumn吗?
feng_3630 2011-11-11
  • 打赏
  • 举报
回复
datagridview中图片那一列格式设置为DataGridViewImageColumn 加载数据的时候,图片那一列把读出来的路径赋值给那一列 Image.FromFile(图片路径)
哥本哈根 2011-11-11
  • 打赏
  • 举报
回复

//绑定到DataGridView
private void BindDategridview()
{
dataGridView1.Rows.Clear();
dataGridView1.DataSource = null;
//dataGridView1.Rows.Add(5);
//DataSet ds = Bll.GetList("Cus_Id='" + cmbsgbw.Text + "'");
DataSet ds = Bll.GetList("Cus_Id='" + Detail.cuid + "'");
if (ds.Tables[0].Rows.Count > 0)
{
dataGridView1.Rows.Add(ds.Tables[0].Rows.Count);
string[] str = new string[23];
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
for (int k = 0; k < str.Length; k++)
{
str[k] = ds.Tables[0].Rows[i].ItemArray[k].ToString();
//if (str[k] == "0")
// str[k] = false.ToString();
//else if (str[k] == "1")
// str[k] = true.ToString();
string s = Class_Path.position + "\\ysimage\\" + ds.Tables[0].Rows[i]["XZ_bianhao"].ToString() + ".jpg";
str[5] = s;
}
//for (int p = 0; p < dataGridView1.Rows.Count; p++)
//{
for (int q = 0; q < dataGridView1.Columns.Count; q++)
{
if (q == 5)
dataGridView1.Rows[i].Cells[5].Value = Image.FromFile(str[q]);
else
dataGridView1.Rows[i].Cells[q].Value = str[q];
}

//}

}
}

li_hong_0808 2011-11-11
  • 打赏
  • 举报
回复
DataGridViewImageColumn img_column = new DataGridViewImageColumn();
dataGridView1.Columns.Add(img_column);
img_column.HeaderText = "image";
img_column.Name = "image";
img_column.Image = System.Drawing.Image.FromFile(pictureBox1.ImageLocation.ToString());


我这样写还是出现红色X,picturebox1显示的是数据库里面的路径的图片
li_hong_0808 2011-11-11
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 jayinit 的回复:]
http://zhangjiankun880.blog.163.com/blog/static/135540320108276441954/
[/Quote]

我的图片路径是随时都在改变的,就像我们的QQ头像,可是要怎么想QQ那样显示在列表中呢?
  • 打赏
  • 举报
回复
http://zhangjiankun880.blog.163.com/blog/static/135540320108276441954/
  • 打赏
  • 举报
回复
http://topic.csdn.net/t/20060217/21/4562504.html
参照此贴
li_hong_0808 2011-11-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 orangeevan 的回复:]
Image.FromFile("文件路径");
[/Quote]
能具体点吗?
要用到模板列吗?我试了之后,还是显示红色X
能直接用数据库里面的列吗?该怎么用Image?
谢谢!
OrangeEvan 2011-11-11
  • 打赏
  • 举报
回复
Image.FromFile("文件路径");

111,086

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧