PICTUREBOX PROBLEMA PARA LIMPAR
Algum tempo atrás o TUNUSAT me passou como fechar a imagem após carregar no cadastro de clientes.
dim img as image
dim img2 as bitmap
img=Image.fromfile([Ô]nomedoarquivo[Ô])
img2=new bitmap(img)
img.dispose()
picturebox1.image=img2
Porem agora eu abro as imagens para visualizar e vou passando e se eu tentar deletar as imagens com a aplicação sendo executada diz que o arquivo esta em uso, certo.
Como mostro acima consigo fechar, mas somente uma imagem apontando o diretório dela na rotina acima, mas se eu tiver varias imagens? teria como fechar todos arquivos que foram visualizados na picturebox?
*.jpg *.*
dim img as image
dim img2 as bitmap
img=Image.fromfile([Ô]nomedoarquivo[Ô])
img2=new bitmap(img)
img.dispose()
picturebox1.image=img2
Porem agora eu abro as imagens para visualizar e vou passando e se eu tentar deletar as imagens com a aplicação sendo executada diz que o arquivo esta em uso, certo.
Como mostro acima consigo fechar, mas somente uma imagem apontando o diretório dela na rotina acima, mas se eu tiver varias imagens? teria como fechar todos arquivos que foram visualizados na picturebox?
*.jpg *.*
Imports System.IO
Public Class Form1
Dim Imagens() As String
Dim contador As Integer = 0
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
If PictureBox1.Image Is Nothing Then
MsgBox([Ô]Sem imagens para visualizar[Ô])
Else
contador += 1
If Imagens.Length = contador Then
contador = 0
End If
PictureBox1.Image = Image.FromFile(Imagens(contador))
End If
End Sub
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Imagens = Directory.GetFiles([Ô]D:\WARZ\Documents\IMAGENS[Ô], [Ô]*.jpg[Ô])
PictureBox1.Image = Image.FromFile(Imagens(0))
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
If PictureBox1.Image Is Nothing Then
MsgBox([Ô]Sem imagens para visualizar[Ô])
Else
If contador = 0 Then
contador = Imagens.Length
End If
contador -= 1
PictureBox1.Image = Image.FromFile(Imagens(contador))
End If
End Sub
End Class
Public Class Form1
Dim Imagens() As String
Dim contador As Integer = 0
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
If PictureBox1.Image Is Nothing Then
MsgBox([Ô]Sem imagens para visualizar[Ô])
Else
contador += 1
If Imagens.Length = contador Then
contador = 0
End If
PictureBox1.Image = Image.FromFile(Imagens(contador))
End If
End Sub
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Imagens = Directory.GetFiles([Ô]D:\WARZ\Documents\IMAGENS[Ô], [Ô]*.jpg[Ô])
PictureBox1.Image = Image.FromFile(Imagens(0))
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
If PictureBox1.Image Is Nothing Then
MsgBox([Ô]Sem imagens para visualizar[Ô])
Else
If contador = 0 Then
contador = Imagens.Length
End If
contador -= 1
PictureBox1.Image = Image.FromFile(Imagens(contador))
End If
End Sub
End Class
Sempre que for trabalhar com arquivos, você deve dar um Dispose no objeto.
Pega o retorno do seu Image.FromFile, coloca numa variável... usa, e depois manda um Dispose.
Abraços!
Pega o retorno do seu Image.FromFile, coloca numa variável... usa, e depois manda um Dispose.
Abraços!
Então,
já tinha tentado colocar um botão e usar:
PictureBox1.Dispose()
PictureBox1.Image = Nothing
E não funcionou, mesmo assim a imagem ainda continua em uso e não pode ser deletada sem fechar o form.
já tinha tentado colocar um botão e usar:
PictureBox1.Dispose()
PictureBox1.Image = Nothing
E não funcionou, mesmo assim a imagem ainda continua em uso e não pode ser deletada sem fechar o form.
O método Image.FromFile retorna um tipo Image (ou Bitmap, não to lembrado exatamente agora).
Você deve jogar o retorno dele pra uma variável.
Só então, você jogará o valor para o PictureBox.
Depois de usar, a imagem, você dá um Dispose nessa variável. Dar o Dispose no PictureBox não faz muito sentido nesse contexto.
Abraços!
Você deve jogar o retorno dele pra uma variável.
Só então, você jogará o valor para o PictureBox.
Depois de usar, a imagem, você dá um Dispose nessa variável. Dar o Dispose no PictureBox não faz muito sentido nesse contexto.
Abraços!
Eu acho que ainda tem algo errado pois não funciona, acho que pode ser o contador pois a cada imagem que passo visualizando ele conta... como eu posso zerar o contador?
Fiz um exemplo.
Segue...
Abraços!
Segue...
Abraços!
DS2T tudo é variável eu estava tentando jogar direto tanto na picturebox quando no contador.. foi o que tinha dito mas eu estava empacado, agora vendo seu exemplo pudi entender melhor eu estava ate tentando usar (Do Loop) mas sem sucesso.. Vou tentar entender melhor seu exemplo pois tudo funciona corretamente.
Obrigado pela ajuda
Obrigado pela ajuda
Tópico encerrado , respostas não são mais permitidas