winform里 dataGridView里的图片怎么样在pictureBox1.BackgroundImage里显示呢?

zk911 2011-07-14 08:55:26
dataGridView1.Rows[index].Cells[0].Value.ToString() //datagridview里第1行存放了图片数据

如何将datagridview第1行里面的图片数据显示在pictureBox1控件中的pictureBox1.BackgroundImage里面呢?


**********************************************************************************************
图片是通过以下方法写进数据库的
Stream myStream = openFileDialog1.OpenFile();
int length = (int)myStream.Length;
byte[] bytes = new byte[length];
myStream.Read(bytes, 0, length);
myStream.Close();

empInfo.photo = bytes; //保存图片

HXX.InsertEmp(empInfo);
**********************************************************************************************
hxx类内容大致如下:
public int InsertEmp(EmpInfo empInfo)
{
#region 插入人员基本信息
SqlParameter[] para ={
data.MakeInParam("@name",SqlDbType.VarChar,empInfo.name),
data.MakeInParam("@sex",SqlDbType.VarChar,empInfo.sex),
data.MakeInParam("@sfz",SqlDbType.VarChar,empInfo.sfz),
data.MakeInParam("@zz_state",SqlDbType.Bit,empInfo.zz_state),
data.MakeInParam("@companyid",SqlDbType.Int,empInfo.companyid),
data.MakeInParam("@branchid",SqlDbType.Int,empInfo.branchid),
data.MakeInParam("@photo",SqlDbType.Image,empInfo.photo),
data.MakeInParam("@CurrentDate",SqlDbType.DateTime,empInfo.CurrentDate),
data.MakeInParam("@opid",SqlDbType.Int,empInfo.opid),
data.MakeInParam("@tel",SqlDbType.VarChar,empInfo.tel),
data.MakeInParam("@bz",SqlDbType.VarChar,empInfo.bz),
};
string strSql = "insert into AllUser(name,sex,sfz,zz_state,companyid," +
"branchid,photo,CurrentDate,opid,tel,bz) values(@name,@sex,@sfz,@zz_state,@companyid," +
"@branchid,@photo,@CurrentDate,@opid,@tel,@bz)";
return data.RunSql(strSql, para);
#endregion
**********************************************************************************************
...全文
409 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
sdl2005lyx 2011-07-14
  • 打赏
  • 举报
回复
为什么还有转换呢!?:
pictureBox1.BackgroundImage=(Image)dataGridView1.Rows[index].Cells[0].Value;
zk911 2011-07-14
  • 打赏
  • 举报
回复
DataGridViewImageColumn column = new DataGridViewImageColumn();
dataGridView1.Columns.Add(column);
column.Image = System.Drawing.Image.FromFile(dataGridView1.Rows[index].Cells[0].Value.ToString());
empInfo.photo = column.Image;


是这样写吗? 但是出现如下错误"无法将类型“System.Drawing.Image”转换为“byte[]"


请问如何解决这种转换问题?

期待ing!!!!!!!!!
zk911 2011-07-14
  • 打赏
  • 举报
回复
谢谢楼上的!
能给贴点代码吗 这样好理解!!!!
sdl2005lyx 2011-07-14
  • 打赏
  • 举报
回复
楼主,你都把图片加载到dataGridView1控件里,剩下问题已经很简单了,DataGridViewImageColumn类有个
Image 属性 ,你把它赋值给pictureBox1.BackgroundImage不就行了。
zk911 2011-07-14
  • 打赏
  • 举报
回复
自己顶!!!!!
期待路人解答!!!
sugarbelle 2011-07-14
  • 打赏
  • 举报
回复
byte还原成Image
sdl2005lyx 2011-07-14
  • 打赏
  • 举报
回复
你的empInfo.photo这个成员可以直接定义成objecet类型,或Image类型,根本不需要:
MemoryStream memStream = new MemoryStream(empInfo.photo);
try
{
Bitmap myImage = new Bitmap(memStream);
this.pictureBox1.BackgroundImage = myImage;
}
catch { }

你想想是不是?
sdl2005lyx 2011-07-14
  • 打赏
  • 举报
回复
LZ,你为什么要多此一举,你看看我特意为你做的程序:
private void WinForm_Load(object sender, EventArgs e)
{
try
{
Image img=Image.FromFile(@"c:\1.jpg");
dataGridView1.Rows.Add(new object[]{"www","wwwww",img});
pictureBox1.Image = img;

img = Image.FromFile(@"c:\2.jpg");
dataGridView1.Rows.Add(new object[] { "xxx", "xxxx", img });

img = Image.FromFile(@"c:\3.jpg");
dataGridView1.Rows.Add(new object[] { "yyy", "yyyy", img });


}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}

private void dataGridView1_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
try
{
pictureBox1.Image = (Image)dataGridView1.Rows[e.RowIndex].Cells[2].Value;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
zk911 2011-07-14
  • 打赏
  • 举报
回复
empInfo.photo = (byte [])dataGridView1.Rows[index].Cells[10].Value;


显示图片的时候转换回去就可以了

MemoryStream memStream = new MemoryStream(empInfo.photo);
try
{
Bitmap myImage = new Bitmap(memStream);
this.pictureBox1.BackgroundImage = myImage;
}
catch { }

谢谢楼上的提示!问题已解决

110,535

社区成员

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

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

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