none
Destruir labels RRS feed

  • Pregunta

  • Hola

    Estoy desarrollando un juego que usa un tablero constituido por varios labels. Según la instancia tendrá mas o menos casilleros (labels) que son construidos en tiempo de ejecución. Todos están en un canvas, que por su parte no tienen ningún otro objeto. Según el momento esos labels son construidos, y allí no hay problemas, y luego deben ser destruidos para limpiar el canvas y dar lugar a una nueva ronda que puede tener mas cantidad o menos cantidad que la precedente. Lo que no consigo es destruir los labels y por eso consulto. El código que tengo es el siguiente:

    Dim Cartel As New Label
            Dim x, y As Integer
            For Each cTRL As Object In Me.canInicio.Children
                If TypeOf cTRL Is Label Then
                    Cartel = cTRL
                    Me.Controls.Remove(Cartel)
                    Cartel = Nothing
                End If    Next
     en donde canInicio es el nombre del canvas. Gracias

    Pedro

    lunes, 3 de julio de 2017 11:49

Respuestas

  • Saludos:

    Tienes razon. Lo que pasa es que la declaracion quedo fuera del loop.

    Seria asi:

    Dim x, y As Integer
    For Each cTRL As Object In Me.canInicio.Children
      Dim Cartel As New Label
      If TypeOf cTRL Is Label Then
         Cartel = cTRL
         Me.Controls.Dispose(Cartel)
         Cartel = Nothing
      End If
    Next

    Espero ayude.

    JOSE LUIS


    Dios NO los llamo LAS DIEZ RECOMENDACIONES

    • Propuesto como respuesta Jose Luis Vargas jueves, 6 de julio de 2017 16:47
    • Marcado como respuesta PedroGatti jueves, 13 de julio de 2017 1:16
    jueves, 6 de julio de 2017 16:47

Todas las respuestas

  • Saludos:

    Estas quitandolos del Canvas, pero no los estas destruyendo. Para ello debes usar la propiedad Dispose0, asi:

    Dim Cartel As New Label
            Dim x, y As Integer
            For Each cTRL As Object In Me.canInicio.Children
                If TypeOf cTRL Is Label Then
                    Cartel = cTRL
                    Me.Controls.Dispose(Cartel)
                    Cartel = Nothing
                End If    Next

    Espero ayude.

    JOSE LUIS


    Dios NO los llamo LAS DIEZ RECOMENDACIONES

    martes, 4 de julio de 2017 18:51
  • Gracias por tu aporte pero no funciona.

    Da el siguiente error

    No se controló System.NullReferenceException
      HResult=-2147467261
      Message=Variable de objeto o de bloque With no establecida.

    Saludos


    Pedro

    martes, 4 de julio de 2017 20:33
  • Saludos:

    Tienes razon. Lo que pasa es que la declaracion quedo fuera del loop.

    Seria asi:

    Dim x, y As Integer
    For Each cTRL As Object In Me.canInicio.Children
      Dim Cartel As New Label
      If TypeOf cTRL Is Label Then
         Cartel = cTRL
         Me.Controls.Dispose(Cartel)
         Cartel = Nothing
      End If
    Next

    Espero ayude.

    JOSE LUIS


    Dios NO los llamo LAS DIEZ RECOMENDACIONES

    • Propuesto como respuesta Jose Luis Vargas jueves, 6 de julio de 2017 16:47
    • Marcado como respuesta PedroGatti jueves, 13 de julio de 2017 1:16
    jueves, 6 de julio de 2017 16:47