winform窗体中 DataGridView显示图片 在DataGridView中显示:图片、姓名这两列怎么动态显示??求解!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 什么叫动态显示?是用程序实现显示么?其实你可以在dgv的编辑模式弄两个列,一列是图片,一列是名字。这时在窗体的如Form1.Designer.cs这个类里就有代码自动生成了。你就模仿它写就行。不知道我说的是不是你问的问题 就是从数据库中查处的图片和姓名显示到dgv上就可以了 添加两列private void dataGridview1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) { if (dataGridview1.Columns[e.ColumnIndex].Name.Equals("Image")) { string path = e.Value.ToString(); e.Value = GetImage(path); } } public System.Drawing.Image GetImage(string path) { System.IO.FileStream fs = new System.IO.FileStream(path, System.IO.FileMode.Open); System.Drawing.Image result = System.Drawing.Image.FromStream(fs); fs.Close(); return result; } 使用DataGridViewImageColumn DataGridViewImageColumn column = new DataGridViewImageColumn(); dataGridView1.Columns.Add(column); column.HeaderText = "图片"; column.Image = System.Drawing.Image.FromFile("路径"); ((DataGridViewImageCell)this.dataGridView1.Rows[e.RowIndex].Cells[ "图片列"]).Value = "路经 " 可以直接从数据库取啊·· 然后绑定到dategrideview就可以·了啊 ·· dataGridView1[0, 0].Value = Image.FromFile("E:\\aa\\1.jpg/"); 或dataGridView1[0, 0].Value = this.imageList1.Images[2];这样? 如果你有图片格式的数据在数据库内,可以直接将对应列的column格式设置为datagridviewImagColumn,绑定即可显示。如果只是存有图片的地址名称,建议你添加新column并设置为datagridviewImagColumn格式,数据绑定后,再单独用代码出来这个column。示例代码: private void Form2_Load(object sender, EventArgs e) { // TODO: 这行代码将数据加载到表“csysDBDataSet.interview”中。您可以根据需要移动或移除它。 this.interviewTableAdapter.Fill(this.csysDBDataSet.interview); DataGridViewImageColumn dgvc = (DataGridViewImageColumn)this.interviewDataGridView.Columns["ColumnPic"]; MessageBox .Show ( dgvc.DataGridView.Rows.Count.ToString()); for (int a = 0; a < dgvc.DataGridView.Rows.Count; a++) { DataGridViewImageCell dgvcc = (DataGridViewImageCell)dgvc.DataGridView.Rows[a ].Cells["ColumnPic"]; try { string picname = this.interviewDataGridView.Rows[a].Cells["dataGridViewTextBoxColumn15"].Value.ToString(); dgvcc.Value = Image.FromFile(Application.StartupPath + "\\pic\\" + picname + ".jpg"); } catch { } } } 需在邦定的那两的显示类型应为:DataGridViewImageColumn foreach (DataGridViewRow dgv in dataGridView2.Rows) { string statu = dgv.Cells["dataGridViewTextBoxColumn2"].Value.ToString(); int id = (int)dgv.Cells["archives_id"].Value; if (statu.Equals("yes")) { dgv.Cells["auditPic"].Value = this.audit; } else { dgv.Cells["auditPic"].Value = this.clearPic; } ArrayList where = new ArrayList(); where.Add("archives_id=" + id); ArrayList list = affixManage.archivesAffix(where); if (list.Count != 0) { dgv.Cells["affixPic"].Value = this.filePic; } else { dgv.Cells["affixPic"].Value = this.clearPic; } if (!this.box.Equals("waitsign")) { string readStatu = dgv.Cells["dataGridViewTextBoxColumn4"].Value.ToString(); if (readStatu.Equals("no")) { dgv.Cells["readPic"].Value = this.image1; } else { dgv.Cells["readPic"].Value = this.image2; } } } private void ShowImage(string s) {//photo在数据库中是image的二进制保存的 string str = "SELECT photo FROM Photos WHERE name='" + s + "'"; SqlCommand cmd = new SqlCommand(str, conn); if (conn.State == ConnectionState.Closed) { conn.Open(); } byte[] b = (byte[])cmd.ExecuteScalar(); if (b.Length > 0) { MemoryStream stream = new MemoryStream(b, true); stream.Write(b, 0, b.Length); DrawToScale(new Bitmap(stream)); stream.Close(); } conn.Close(); } private void DrawToScale(Image bmp) { pictureBox1.Image = new Bitmap(bmp); }图片在dataGridveiw中显示 ,加载时的速度很慢! 是的 图片在datagridview中显示 如果图片 大一些(500kb以上) 一次加载1000条数据 就会出现内存不足 这个经过调试的 我2G ddr3的内存条。。动态图片列: 在你查询出来的是byte【】字节数组转换为image对象 在form中多声明一个image text1字段用来保存 还有操作添加图片和现实图片 根据你的需要 很好实现的 我通过调试在添加一个图片到后台的过程中 再制定你操作的这个单元格 的图片(这里怎么显示) 这些都是自己测试下就能出来的 没有必要用什么事件 上面说的事件你自己测试下 循环很多次 明显有问题 同时可能还不是需要的 额,我想问下,知不知道如何用datrgrid显示数据啊?我写的它数据显示在窗体上啊!不知道怎么修改! 存储过程的问题求助 定义Lable数组是这样定义的吗? Label[] l = new Label(); Ext Js表格控制列中多余的字是如何显示省略号... 分组 求助:谁有C#种动态创建程序集 Emit中ILGenerator的资料 WebBrowser如何象MyIE那样解决代理服务器的问题?难!! 安装visual studio.NET 2005后 .NET里怎么样定时? 如何将String型转换成Int型 请教XmlReader问题 请教一个类型转换的问题. 一个函数,传入的是arraylist动态数组,返回动态数组的个数count。那么能得到arraylist吗?
不知道我说的是不是你问的问题
{
if (dataGridview1.Columns[e.ColumnIndex].Name.Equals("Image"))
{
string path = e.Value.ToString();
e.Value = GetImage(path);
}
}
public System.Drawing.Image GetImage(string path)
{
System.IO.FileStream fs = new System.IO.FileStream(path, System.IO.FileMode.Open);
System.Drawing.Image result = System.Drawing.Image.FromStream(fs); fs.Close(); return result; }
使用DataGridViewImageColumn
DataGridViewImageColumn column = new DataGridViewImageColumn();
dataGridView1.Columns.Add(column);
column.HeaderText = "图片";
column.Image = System.Drawing.Image.FromFile("路径"); ((DataGridViewImageCell)this.dataGridView1.Rows[e.RowIndex].Cells[ "图片列"]).Value = "路经 "
或dataGridView1[0, 0].Value = this.imageList1.Images[2];这样?
如果你有图片格式的数据在数据库内,可以直接将对应列的column格式设置为datagridviewImagColumn,绑定即可显示。
如果只是存有图片的地址名称,建议你添加新column并设置为datagridviewImagColumn格式,数据绑定后,再单独用代码出来这个column。
示例代码: private void Form2_Load(object sender, EventArgs e)
{
// TODO: 这行代码将数据加载到表“csysDBDataSet.interview”中。您可以根据需要移动或移除它。
this.interviewTableAdapter.Fill(this.csysDBDataSet.interview);
DataGridViewImageColumn dgvc = (DataGridViewImageColumn)this.interviewDataGridView.Columns["ColumnPic"];
MessageBox .Show ( dgvc.DataGridView.Rows.Count.ToString());
for (int a = 0; a < dgvc.DataGridView.Rows.Count; a++)
{
DataGridViewImageCell dgvcc = (DataGridViewImageCell)dgvc.DataGridView.Rows[a ].Cells["ColumnPic"];
try
{
string picname = this.interviewDataGridView.Rows[a].Cells["dataGridViewTextBoxColumn15"].Value.ToString();
dgvcc.Value = Image.FromFile(Application.StartupPath + "\\pic\\" + picname + ".jpg");
}
catch { }
}
}
foreach (DataGridViewRow dgv in dataGridView2.Rows)
{
string statu = dgv.Cells["dataGridViewTextBoxColumn2"].Value.ToString();
int id = (int)dgv.Cells["archives_id"].Value;
if (statu.Equals("yes"))
{
dgv.Cells["auditPic"].Value = this.audit;
}
else
{
dgv.Cells["auditPic"].Value = this.clearPic;
}
ArrayList where = new ArrayList();
where.Add("archives_id=" + id);
ArrayList list = affixManage.archivesAffix(where);
if (list.Count != 0)
{
dgv.Cells["affixPic"].Value = this.filePic;
}
else
{
dgv.Cells["affixPic"].Value = this.clearPic;
}
if (!this.box.Equals("waitsign"))
{ string readStatu = dgv.Cells["dataGridViewTextBoxColumn4"].Value.ToString();
if (readStatu.Equals("no"))
{
dgv.Cells["readPic"].Value = this.image1;
}
else
{
dgv.Cells["readPic"].Value = this.image2;
}
}
}
{
//photo在数据库中是image的二进制保存的
string str = "SELECT photo FROM Photos WHERE name='" + s + "'";
SqlCommand cmd = new SqlCommand(str, conn);
if (conn.State == ConnectionState.Closed)
{
conn.Open();
}
byte[] b = (byte[])cmd.ExecuteScalar();
if (b.Length > 0)
{
MemoryStream stream = new MemoryStream(b, true);
stream.Write(b, 0, b.Length);
DrawToScale(new Bitmap(stream));
stream.Close();
}
conn.Close();
}
private void DrawToScale(Image bmp)
{
pictureBox1.Image = new Bitmap(bmp);
}图片在dataGridveiw中显示 ,加载时的速度很慢!
我写的它数据显示在窗体上啊!不知道怎么修改!