Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1

    [VB.NET] Errore nell'eliminare un file utilizzato precedentemente in una PictureBox

    Buongiorno a tutti.
    In un programma creato in Visual Basic .NET ho aggiunto un controllo OpenFileDialog e una PictureBox, cliccando su un pulsante viene aperta la finestra di dialogo per scegliere un immagine che verrà poi visualizzata nella PictureBox, al salvataggio l'immagine viene copiata in una cartella. Fin qui tutto apposto, il problema mi nasce quando voglio modificare l'immagine. Inizialmente viene visualizzata l'immagine, che è nella cartella dove era stata copiata, nella PictureBox, poi viene scelta un immagine diversa dalla finestra di dialogo, viene cambiata l'immagine nella PictureBox e al salvataggio dovrei eliminare l'immagine che era nella cartella e salvare quella visualizzata al momento nella PictureBox al suo posto, ma mi visualizza un errore all'eliminazione del file, dice che non può essere eliminato il file perché è utilizzato da un altro processo. Qualcuno sa che processo dovrei chiudere?

  2. #2
    Utente di HTML.it L'avatar di ShaleN
    Registrato dal
    Aug 2010
    Messaggi
    517
    Sì, il tuo

    Quando metti un immagine nella PictureBox, blocchi il file da cui prendi l'immagine. Dovresti aprire il file, salvare il contenuto come bitmap, chiudere il file e assegnare il bitmap alla proprietà Image della PictureBox. Non dovresti avere problemi a cancellare il file originale facendo così.

    Le vie del Signore sono infinite. È la segnaletica che lascia a desiderare.
    La luce viaggia più veloce del suono. Per questo alcune persone sembrano brillanti finchè non parlano.
    Occhio per occhio uguale... occhio al quadrato

  3. #3
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,465
    L'alternativa è che l'oggetto con cui viene caricato il bitmap e che tiene bloccato il file non venga "chiuso" chiamando Dispose o usando il costrutto Using dopo averlo impiegato, tenendo quindi bloccato il file esterno.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  4. #4
    Ho provato a fare il dispose della PictureBox ma il file resta comunque bloccato, come dovrei fare per aprire il file, salvarmi la bitmap e chiudere il file (sbloccandolo)?

  5. #5
    Ho provato anche così:
    codice:
    Dim Img As Image             
    Using Img
        Img = Image.FromFile(System.AppDomain.CurrentDomain.BaseDirectory() & "/Users/" & Trim(txtUsername.Text) & "/Avatar.jpg")
        PictureBox1.BackgroundImage = Img             
    End Using
    Ma mi dà sempre lo stesso problema...

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,465
    Originariamente inviato da Cavaliere Nero
    Ho provato a fare il dispose della PictureBox ma il file resta comunque bloccato, come dovrei fare per aprire il file, salvarmi la bitmap e chiudere il file (sbloccandolo)?
    Non devi fare il Dispose della PictureBox (visto che l'immagine devi pur visualizzarla), ma dell'oggetto Image che ti viene restituito quando chiami il metodo Image.FromFile.

    Prova a modificare il tuo codice leggermente così:

    codice:
    Using Img As Image = Image.FromFile(System.AppDomain.CurrentDomain.BaseDirectory() & "/Users/" & Trim(txtUsername.Text) & "/Avatar.jpg")
        PictureBox1.BackgroundImage = Img             
    End Using
    P.S.: in alternativa, prova ad assegnare alla PictureBox una versione "clonata" dell'immagine ricevuta da FromFile, usando il metodo Clone.

    codice:
    Using Img As Image = Image.FromFile(System.AppDomain.CurrentDomain.BaseDirectory() & "/Users/" & Trim(txtUsername.Text) & "/Avatar.jpg")
        PictureBox1.BackgroundImage = Img.Clone()
    End Using
    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  7. #7
    Niente da fare, mi da sempre lo stesso errore, eppure in un altro form faccio la stessa cosa, senza chiudire niente e all'eliminazione dell'immagine va tutto liscio, non riesco a trovare una spiegazione a stà cosa...

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Mostra *tutto* il codice che usi in modo che si possa fare copia-incolla per testarlo (senza modifiche) ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Sono 1166 righe di codice (l'intero form), perché l'inserimento e il salvataggio dell'immagine è solo una piccola parte, come posso postarlo?

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Posta solo la parte relativa all'immagine ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.