none
Error en el PictureBox

    Pregunta

  • Hola, por que puede ser este error?

    "El codigo del usuario no controlo ObjectDisposedeExepcion"

    Me sale cuanto trato de guardar tengo un picture box y me sale el error ahi.

    El picture lo uso para generar un codigo de barras

    Este es el boton que lo genera:

    Dim bcode As New Barcode128
            bcode.BarHeight = 50
            bcode.Code = txtId.Text
            bcode.GenerateChecksum = True
            bcode.CodeType = Barcode.CODE128
            Try
                Dim bm As New Bitmap(bcode.CreateDrawingImage(Color.Black, Color.White))
                Dim img As Image
                img = New Bitmap(bm.Width, bm.Height)
                Dim g As Graphics = Graphics.FromImage(img)
                g.FillRectangle(New SolidBrush(Color.White), 0, 0, bm.Width, bm.Height)
                g.DrawImage(bm, 0, 0)
                PictureBox1.image = img
            Catch ex As Exception
                MsgBox("No se pudo generar el codigo de baras")
            End Try

    En la parte marcada en negrita me sale error cuando lo ejecuto.

     Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
            Dim bm As New Bitmap(PictureBox1.Width, PictureBox1.Height)
            PictureBox1.DrawToBitmap(bm, New Rectangle(0, 0, bm.Width, bm.Height))
            e.Graphics.DrawImage(bm, 0, 0)
        End Sub


    Espero me sepan responder, desde ya gracias.
    martes, 11 de octubre de 2016 20:55

Respuestas

  • como podría solucionarlo?
    Revisa el orden en el que haces las operaciones y cerciórate de que no has cerrado el contenedor del picturebox antes de ejecutar la parte del código que llama a ese picturebox. Si necesariamente tienes que cerrarlo, entonces copia la imagen a una variable antes de cerrarlo, y después usa esa variable en lugar del picturebox.
    miércoles, 12 de octubre de 2016 6:46

Todas las respuestas

  • El error ObjectDisposedException sale cuando intentas acceder al contenido de un objeto después de haberlo destruido llamando a su método Dispose. Dada la sentencia en la que te sale el error, cabe deducir que en el momento de ejecutarla ya se había hecho el Dispose del PictureBox1. Aunque ese Dispose no lo hayas escrito expresamente en tu código, puede haber ocurrido de forma automática si se descartó el form que contenía el picturebox.
    martes, 11 de octubre de 2016 21:05
  • Ahh entiendo, creo que me lo hace de forma automática, como podría solucionarlo?
    martes, 11 de octubre de 2016 21:25
  • Hola, por que puede ser este error?

    "El codigo del usuario no controlo ObjectDisposedeExepcion"

    Me sale cuanto trato de guardar tengo un picture box y me sale el error ahi.

    El picture lo uso para generar un codigo de barras

    Este es el boton que lo genera:

    Dim bcode As New Barcode128
            bcode.BarHeight = 50
            bcode.Code = txtId.Text
            bcode.GenerateChecksum = True
            bcode.CodeType = Barcode.CODE128
            Try
                Dim bm As New Bitmap(bcode.CreateDrawingImage(Color.Black, Color.White))
                Dim img As Image
                img = New Bitmap(bm.Width, bm.Height)
                Dim g As Graphics = Graphics.FromImage(img)
                g.FillRectangle(New SolidBrush(Color.White), 0, 0, bm.Width, bm.Height)
                g.DrawImage(bm, 0, 0)
                PictureBox1.image = img
            Catch ex As Exception
                MsgBox("No se pudo generar el codigo de baras")
            End Try

    En la parte marcada en negrita me sale error cuando lo ejecuto.

     Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
            Dim bm As New Bitmap(PictureBox1.Width, PictureBox1.Height)
            PictureBox1.DrawToBitmap(bm, New Rectangle(0, 0, bm.Width, bm.Height))
            e.Graphics.DrawImage(bm, 0, 0)
        End Sub


    Espero me sepan responder, desde ya gracias.
    miércoles, 12 de octubre de 2016 1:30
  • como podría solucionarlo?
    Revisa el orden en el que haces las operaciones y cerciórate de que no has cerrado el contenedor del picturebox antes de ejecutar la parte del código que llama a ese picturebox. Si necesariamente tienes que cerrarlo, entonces copia la imagen a una variable antes de cerrarlo, y después usa esa variable en lugar del picturebox.
    miércoles, 12 de octubre de 2016 6:46