C# 从路径中删除图像时在vb.net中获取错误
我正在处理windowes窗体应用程序..在show button事件中,我编写了如下代码:C# 从路径中删除图像时在vb.net中获取错误,c#,vb.net,winforms,picturebox,C#,Vb.net,Winforms,Picturebox,我正在处理windowes窗体应用程序..在show button事件中,我编写了如下代码: Me.PictureBox1.Load("C:/Signature.tif") PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage Me.PictureBox1.BorderStyle = BorderStyle.Fixed3D Dim exittime As String = DateTime.Now.ToString("yyyy/MM/dd
Me.PictureBox1.Load("C:/Signature.tif")
PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage
Me.PictureBox1.BorderStyle = BorderStyle.Fixed3D
Dim exittime As String = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss")
Dim ms As New MemoryStream
Dim byt() As Byte
PictureBox1.Image.Save(ms, PictureBox1.Image.RawFormat)
byt = ms.GetBuffer
Dim sqlstr As String = "Update Visitorlogo_tbl set signimage=@pic,exittime='" & exittime & "',status=2 where PassNo='" & txtvisitorid.Text & "'"
Dim cmd1 As New SqlCommand(sqlstr, con.connect)
cmd1.Parameters.Add("@pic", SqlDbType.Image)
cmd1.Parameters("@pic").Value = byt
cmd1.ExecuteNonQuery()
con.disconnect()
PictureBox1.Image = Nothing
If System.IO.File.Exists("C:/Signature.tif") Then
System.IO.File.Delete("C:/Signature.tif")
End If
然后单击save按钮,我编写了如下代码:
Me.PictureBox1.Load("C:/Signature.tif")
PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage
Me.PictureBox1.BorderStyle = BorderStyle.Fixed3D
Dim exittime As String = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss")
Dim ms As New MemoryStream
Dim byt() As Byte
PictureBox1.Image.Save(ms, PictureBox1.Image.RawFormat)
byt = ms.GetBuffer
Dim sqlstr As String = "Update Visitorlogo_tbl set signimage=@pic,exittime='" & exittime & "',status=2 where PassNo='" & txtvisitorid.Text & "'"
Dim cmd1 As New SqlCommand(sqlstr, con.connect)
cmd1.Parameters.Add("@pic", SqlDbType.Image)
cmd1.Parameters("@pic").Value = byt
cmd1.ExecuteNonQuery()
con.disconnect()
PictureBox1.Image = Nothing
If System.IO.File.Exists("C:/Signature.tif") Then
System.IO.File.Delete("C:/Signature.tif")
End If
在保存图像时,图像已被保存,但在此之后,我想从该路径中删除图像。。当转到这一行时:
System.IO.File.Delete(“C:/Signature.tif”)
我收到错误:进程无法访问文件“C:\Signature.tif”,因为它正被另一进程使用,因为错误消息表明映像已被另一进程打开。例如,您是否在图形程序中打开了图像
您是否有另一个在后台运行的应用程序实例已锁定图像以供读取
如果是这样,请关闭其他程序。问题可能在这里
Me.PictureBox1.Load("C:/Signature.tif")
试试这个
Me.PictureBox1.Image = new Bitmap("C:\Signature.tif");
更新:
PictureBox1.Load()
方法将从给定位置加载文件,并将文件路径存储在PictureBox.ImageLocation
属性中。使用此方法,应用程序将打开该图像并锁定,以便其他用户无法修改或读取它
PictureBox1.Image=新位图(“文件路径”)代码>将从给定的文件路径创建另一个图像对象,并且不会锁定原始图像对象。此方法不会从给定的文件位置加载原始图像。因此,PictureBox1.ImageLocation
属性将不会在此处设置。如何访问和修改该图像。PictureBox将保持文件打开。因此,您可以使用@Shell建议的修复程序在读取内容后释放文件。此行为是由PictureBox设计的
下面是根据知识库文章改编的变通方法
Using fs as New System.IO.FileStream("C:\Signature.tif", IO.FileMode.Open, IO.FileAccess.Read)
PictureBox1.Image = System.Drawing.Image.FromStream(fs)
End Using
你可以通过解释原因来更好地回答这个问题。