none
cómo recorrer conjunto de labels vs2010 RRS feed

  • Pregunta

  • Hola. Estoy realizando una aplicación en visual studio 2010.

    Tengo un formulario con varios label. Este formulario está relacionado con una base de datos

    Dentro del formulario tengo un combobox, que se carga automáticamente, accediendo a la base de datos. 

    Private Sub form_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
         Dim xlabel As Control
         For Each xlabel In Me.Controls  

        If TypeOf xlabel Is Label = True Then
                    If Me.EstadoTableAdapter.consultahabilitacion(ComboBox.Text, str(xlabel.tabindex)) = "SI" Then
                        Label2.BackColor = Color.White
                    Else
                        Label2.BackColor = Color.DimGray
                    End If
                End If

      Next

    end sub

    La función consultahabilitación, lo que hace es leer una columna de la tabla que puede decir "SI" o "NO"

    Si yo reemplazo ese código por el que sigue a continuación, anda bien (para ese label):

    Private Sub form_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
               If TypeOf Label2 Is Label  Then
                    If Me.EstadoTableAdapter.consultahabilitacion(ComboBox.Text, 1) = "SI" Then
                     Label2.BackColor = Color.White
                Else
                    Label2.BackColor = Color.DimGray
                End If
            End If

    end sub

    Asi que el problema está en el xlabel del primer código. Necesito recorrer todos los label y pasarlos por esa función para cambiar su color. Desde ya muchas gracias por la ayuda. Martin

     

    jueves, 3 de octubre de 2013 1:36

Todas las respuestas

  • En tu primer método cambia

        If TypeOf xlabel Is Label = True Then

    Por

        If TypeOf xlabel Is Label Then

    Quita = True


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó vótala como útil. Saludos

    jueves, 3 de octubre de 2013 4:34
  • hola

    y si usas

    Private Sub form_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    
    
    	For Each xlabel As Label In Me.Controls.OfType(Of Label)
    
    		If Me.EstadoTableAdapter.consultahabilitacion(ComboBox.Text, str(xlabel.tabindex)) = "SI" Then
    			Label2.BackColor = Color.White
    		Else
    			Label2.BackColor = Color.DimGray
    		End If
    	
    	Next
    
    End Sub

    como veras al definir el tipo solo trabajas directo con label

    doy por valido que el tableadapter y ese tabindex que asignas por parametro funcionan correctamente

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    jueves, 3 de octubre de 2013 8:34
  • Hola. Hice los 2 cambios, pero ninguno de los 2 surgió efecto. Primero borré el true, y nada cambió. Luego use la función como me dijo Leandro, pero tampoco funcionó :(

    La idea es que tengo un formulario con muchos labels. Cuando les hago click, cambia su color, y guarda en un tabla de datos, en una columna que se llama habilitado el valor "NO" (esto se hace perfectamente)

    El problema está al volver a abrir el formulario (sin cerrar el programa), es decir, cambio de formulario, vuelvo al mismo, y los labels vuelven a estar todos de color blanco.

    La funcion que uso, consultahabilitación, está generada de la siguiente manera:

    SELECT        habilitado
    FROM            estado
    WHERE        (silo = ?) AND (sensor = ?)

    Mi tabla se llama estado, la columna se llama habilitado, e ingreso con el silo desde un combobox, y con el valor del tabindex del label (string)

    la funcion tiene la siguiente sintaxis: consultahabilitacion(silo as string, sensor as string) as string

    Es muy importante que funcione esto, porque como les dije, el numero de silo lo leo desde el combobox, y la idea es que al cambiar el valor del combobox me actualice todos los labels también. Pero ahora estoy enfocado que al menos al abrir de nuevo el formulario, me aparezca en las condiciones en las que lo dejé.

    Saludos 
    jueves, 3 de octubre de 2013 21:48