VISUAL BASIC Cerrar un formulario que contiene un control Picturebox

Si el programa que cierra el formulario con la sentencia formulario.Close() sigue funcionando, los archivos locales usandos en los controles Picturebox.Image siguen abiertos por el programa, y por tanto no pueden ser movidos, renombrados, borrados desde el Explorador de Archivos de Windows.
Para evitar ésto hay que disponer el archivo programáticamente, ya que no podemos saber cuándo serán dispuestos automáticamente.
Quizá haya una solución más inteligente pero ésta funciona para mí.

Hay que llamar a esta función desde el evento form_Closing correspondiente:

Private Sub closeformdisposingpictureboxes(f As Form)
    For Each c As Control In f.Controls
        If TypeOf c Is PictureBox Then
            Dim pbox As PictureBox = CType(c, PictureBox)
            pbox.Image.Dispose()
        End If
    Next
    f.Close()
    f.Dispose()
End Sub

En español-castellano me gusta más

    Private Sub cerrarformulario(formulario As Form)
        For Each controlelemental As Control In formulario.Controls
            If TypeOf controlelemental Is PictureBox Then
                Dim controlpicturebox As PictureBox = CType(controlelemental, PictureBox)
                controlpicturebox.Image.Dispose()
            End If
        Next
        formulario.Close()
        formulario.Dispose()
    End Sub






blog54 - VISUAL BASIC Cerrar un formulario que contiene un control Picturebox - - -SUSCRIPCIONES - - -http://www.rojasdelgado.com