2017-02-21 101 views
0

我在C#中的winform应用程序与datagridview女巫得到it's从sql数据库中的值,但是当我从德datagridview点击一行得到的数据显示在文本框进行编辑。 问题是可以编辑的一列是图像。 我可以上传图片,看看它在DataGrid但是当我集团公司的的rowHeader选择我得到一个错误:代码是 “的不正确的格式输入字符的字符串”:图片图片框

private void dataGridView1_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e) 
{ 
    ID = Convert.ToInt32(dataGridView1.Rows[e.RowIndex].Cells[1].Value.ToString()); 

    MemoryStream ms = new MemoryStream((byte[])dataGridView1.CurrentRow.Cells[2].Value); 
    pictureBox1.Image = Image.FromStream(ms); 
    desc2.Text = dataGridView1.Rows[e.RowIndex].Cells[3].Value.ToString(); 
    tipo.Text = dataGridView1.Rows[e.RowIndex].Cells[4].Value.ToString(); 
    prumos.Text = dataGridView1.Rows[e.RowIndex].Cells[5].Value.ToString(); 
} 

[进入image description here] [1]] [1] 在此先感谢,

+0

在哪条确切的线路上会得到异常?它似乎与'Convert.ToInt32'相关,比图片更多... –

+0

@OfirWinegarten不幸的是系统不会抛出异常。 我只收到错误,表单关闭,然后我回到以前的表单。 – septaug

+0

@OfirWinegarten我想评论的转换线,现在我得到的错误:无法System.String类型的对象关联到System.byte – septaug

回答

1

您的第一个问题来自Convert.ToInt32,与Image无关。确保文本仅包含一个数字。

与形象的第二个问题可以这样做:

var imageCell = (DataGridViewImageCell)dataGridView1.CurrentRow.Cells[2]; 
pictureBox1.Image = (Image)imageCell.Value; 

UPDATE - 以上是错误

的问题是错误的指标,像写在注释: 正确代码是:

MemoryStream ms = new MemoryStream((byte[])dataGridView1.CurrentRow.Cells[0].Value‌​); 
pictureBox1.Image = Image.FromStream(ms); 
+0

我想你的溶液,但我在线得到一个错误的所有文本: pictureBox1.Image = Image.FromStream((图像)imageCell.Value); 不能从'system.drawings.image转换的System.IO.Stream – septaug

+0

哎呀有一个错误..现在它应该工作 –

+0

哎呀仍然得到同样的错误:\ 生病从形式上传的截图,也许it's另一原因 – septaug