处置动态创建的图片框以释放文件锁定?

时间:2015-09-11 16:34:21

标签: vb.net winforms

我试图在某些图像上释放文件锁定,这样我就可以将它们移动到存档文件夹中。

程序循环显示图像并将图片框添加到flowlayout面板。操作完成后,我处理了flowlayout面板,然后归档文件。

我的理解是,处理面板会处理其中的图片框,但是当我尝试移动操作时,我得到一个IOException Access Denied。

代码:

  Dim ImagesInFolder As New List(Of Image)()
    For Each JPEGImages As String In Directory.GetFiles(ExportDir.FullName, "*.jpg")
        ImagesInFolder.Add(Image.FromFile(JPEGImages))
    Next
    Dim x As Integer = 0
    Dim y As Integer = 0
    For i As Integer = 0 To ImagesInFolder.Count - 1
        Dim _image As New PictureBox()
        _image.Location = New Point(x, y)
        x += 50
        _image.Image = ImagesInFolder(i)
        _image.Size = New Size(50, 50)
        _image.SizeMode = PictureBoxSizeMode.StretchImage
        FlowLayoutPanel1.Controls.Add(_image)
    Next

稍后在申请中:

    FlowLayoutPanel1.Dispose()
    Directory.Move(CurrentFolder, ArchiveFolder)

1 个答案:

答案 0 :(得分:2)

问题在于使用Image.FromFile(file)加载图片。

使用Image.FromStream加载图片时,文件将被锁定。

为避免锁定文件,您可以使用Dim filePath = "path to your image file" Dim contentBytes = File.ReadAllBytes(filePath) Dim memoryStream As New MemoryStream(contentBytes) Dim image= Image.FromStream(memoryStream) YourPictureBox.Image = image 加载图片。

<强>代码:

.parents()