Ho creato un form con un controllo picture ed ho messo queste due dichiarazioni all'inizio in modo tale che la visibilità delle variabili dichiarate sia a livello di tutto il codice del form.
Poi ho creato le seguenti routine:codice:Private Immagine As String="" Private Imgnotf As String="c:\temp\nontrovata.jpg"
Il progetto avvia un'altro form che con un pulsante mi richiama questo.codice:Private Sub CaricaImmagine() immagine = "c:\temp\prova.jpg" If Not (ImgBig.Image Is Nothing) Then ImgBig.Image.Dispose() ImgBig.Image = Nothing End If Try If IO.File.Exists(immagine) Then ImgBig.Image = New Bitmap(immagine) Else ImgBig.Image = New Bitmap(imgnotf) End If Catch ex As Exception MsgBox(ex.Message) End Try End Sub Private Sub CreaImmagine() OFD.Filter = "File di immagine supportati (*.Bmp,*.Emf,*.Exif,*.Gif,*.Icon,*.Jpeg,*.Jpg,*.Png,*.Tiff,*.Tif,*.Wmf)|*.Bmp;*.Emf;*.Exif;*.Gif;*.Icon;*.Jpeg;*.Jpg;*.Png;*.Tiff;*.Tif;*.Wmf" OFD.Multiselect = False OFD.ShowDialog() If IO.File.Exists(OFD.FileName) Then Dim ImgOld As New Bitmap(OFD.FileName) Dim ImgNew As New Bitmap(ImgOld, 400, 290) 'questa mi serve per ridimensionare l'immagine a mio piacimento ImgNew.Save(immagine) ImgNew.Dispose() ImgOld.Dispose() ImgBig.Image.Dispose() ImgBig.Image = New Bitmap(immagine) End If End Sub Private Sub CancellaImmagine() Do ImgBig.Image.Dispose() ImgBig.Image = Nothing ImgBig.Image = New Bitmap(imgnotf) Me.Refresh() ImgBig.Refresh() Try IO.File.Delete(immagine) Exit Do Catch ex As Exception Dim x As Microsoft.VisualBasic.MsgBoxResult = MsgBox("Impossibile eliminare il file!" & vbCrLf & "Riprovare?", MsgBoxStyle.YesNo, Appl.Titolo) If x = MsgBoxResult.No Then Exit Do End Try Loop End Sub
Sull'evento Load del Form faccio una chiamata alla routine caricaimmagine
ho aggiunto un bottone "carca..." e un controllo openfiledialog chiamato OFD
a questo punto ho messo sull'evento click del pulsante una chiamata alla routine creaimmagine
poi ho creato un pulsante "cancella..." e sul suo evento click la chiamata alla routine cancellaimmagine
ho testato l'applicazione e funziona ma ad un certo punto ho scoperto questo errore che si verifica solo effettuando le seguenti operazioni:
1-apro il form
2-carico un'immagine
3-chiudo il form
4-riapro il form
5-cancello l'immagine
il debug mi da che non può cancellare il file perchè in uso da un'altro processo.
se però ad esempio faccio così:
1-apro il form
2-carico un'immagine
5-cancello l'immagine
funziona oppure faccio:
1-apro il form
2-carico un'immagine
3-chiudo il form
4-chiudo l'applicazione
6-rilancio l'applicazione e apro il form
7-cancello l'immagine
allora anche in questo caso funziona.
da cosa potrebbe dipendere?
![]()

Ho creato un form con un controllo picture ed ho messo queste due dichiarazioni all'inizio in modo tale che la visibilità delle variabili dichiarate sia a livello di tutto il codice del form.
Rispondi quotando