La Web del Programador: Comunidad de Programadores
 
    Pregunta:  47224 - BORRAR UN FICHERO DE IMAGEN
Autor:  Alejandro Galan
Buenas,

Mi duda es la siguiente:

Tengo dos formularios en visual.NET en el cual en el form1 tengo un visualizador de imagenes en el que tengo cargada una imagen. En el form2 realizo el mantenimiento y desde este formulario quiero eliminar el archivo de imagen que está cargado en el form1 pero me da un error porque me dice que el archivo no se puede eliminar porque se está utilizando. El código que utilizo para eliminar es el siguiente:
File.Delete(rutadelafoto)
Antes hago imagne1.dispose pero no me hace ni caso!!

  Respuesta:  Juan C. Niño
Cordial saludo.

Yo también enfrenté ese problema. El archivo que se carga en la imagen no se puede eliminar porque algún PictureBox lo está usando, y dependiendo de la forma cómo se invocó la imagen, de eso dependerá si el archivo queda abierto o cerrado.

Teniendo un objeto PictureBox al cual llamaremos Objetoimagen, y una variable String que almacena la ruta (path) del archivo gráfico llamada RutaImagen,

Si se usó la instrucción
Objetoimagen.Image = System.Drawing.Image.FromFile(RutaImagen)
El archivo fuente de la imagen no podrá ser eliminado.

En vez de esas líneas, use estas otras para que el objeto PictureBox abra la imagen, lea el archivo y lo suelte inmediatamente. Esto permitirá que el archivo sea borrado.

Dim fs As System.IO.FileStream
fs = New System.IO.FileStream(RutaImagen, IO.FileMode.Open, IO.FileAccess.Read)
Objetoimagen.Image = System.Drawing.Image.FromStream(fs)
fs.Close()

Consulte en http://support.microsoft.com/kb/309482/es para ampliar la información.

Bye

Att
Juan C. Niño
Medellín, Colombia

  Respuesta:  Horacio N. Hdez.
Mira, puedes tratar con eliminar las referencias de los objetos, pero tambien podrias guardar el path en una variable, y luego cargar otra imagen en el picture box, posteriomente pasas a su eliminacion, o puedes eliminar el picture box y agregas otro, un saludo