2

这段代码有什么问题??我遇到了 GDI+ 错误,我不知道如何解决。

Private Sub saveEmployee()
   Dim ms As New MemoryStream

   PictureBox1.Image.Save(ms, PictureBox1.Image.RawFormat)--i got error in this line..A generic error occurred in GDI+.

   Dim arrPic() As Byte = ms.GetBuffer()

   Dim cmdEmp As New MySqlCommand
   Dim sqlEmp As String
   sqlEmp = "update tbl_employee set  emPic=@emPic where emID='" & lbl_empID.Text & "'"

   With cmdEmp
      .Parameters.AddWithValue("@emPic", arrPic)
      .ExecuteNonQuery()
   End With
End Sub
4

2 回答 2

1

尝试用此替换该行:

Dim bm as Bitmap = new Bitmap(PictureBox1.Image)
bm.Save(ms, PictureBox1.Image.RawFormat)

原因可能是 Image 正在被PictureBox. 改为使用以下内容也是一种好习惯:

Using ms As MemoryStream = New MemoryStream()

   Dim bm as Bitmap = new Bitmap(PictureBox1.Image)
   bm.Save(ms, PictureBox1.Image.RawFormat)

   Dim arrPic() As Byte = ms.GetBuffer()

   Dim cmdEmp As New MySqlCommand
   Dim sqlEmp As String
   sqlEmp = "update tbl_employee set  emPic=@emPic where emID=@emID"

   With cmdEmp
     .Parameters.AddWithValue("@emPic", arrPic)
     .Parameters.AddWithValue("@emID", int.Parse(lbl_empID.Text))
     .ExecuteNonQuery()
   End With

End Using

这样使用后MemoryStream会得到Disposed。并且@emID作为参数添加更安全。

于 2013-02-24T14:34:31.380 回答
0

解决!!!使用 DataBindings 部分中的 Advance 选项卡将图片框绑定到数据源字段。使用 ImageLocation 属性而不是图像。然后将更新模式更改为从不。但是更新怎么样???使用文本框并隐藏在图片框后面 [with visible = true]。将文本框绑定到相同的数据源。那是!!!

图像直接显示在图片框中,而文本框 TextChanged 属性处理是否有更新。花了我一段时间,但现在工作正常。祝你好运,你的代码......〜SAM,加纳

于 2016-01-18T00:08:09.217 回答