none
Saltar datos de label incrementado con condicion

    Pregunta

  • Buemas tengo una consulta tengo 10 labels recojo datos uno a uno 
    seria algo asi 

    Ingresa el dato:

    DAto1 ---> Label1 pero al ingresar dato2 que el dato1 se pase al Label 2
    al ingresar  dato3 el Dato1 se pase al Label 3 y el dato2 Al label2
    cada vez que se ingresa un dato tiene que pasar por el label1

    los datos tendrian que recorrer todos los labels 

     
    sábado, 29 de octubre de 2016 14:12

Respuestas

  • Hola PeruRGP,

    Puedes usar la funcionalidad de la pila o Stack, dónde el último en entrar es el primero en salir.

      Dim labels() As Label  'Almacenará los labels
      Dim pila As New Stack
    
      Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
          'Almaceno los labels y los ordeno
          labels = Me.Controls.OfType(Of Label).OrderBy(Function(l) l.TabIndex).ToArray()
      End Sub

    En este caso uso el TabIndex (el cual es asignado un índice correlativo para la tabulación al crearse el control) para aplicar el orden ya que usando el name me resultaría :

    Label1
    Label10
    Label2

    Y en alguna acción :

      Private Sub btnAgregar_Click(sender As Object, e As EventArgs) Handles btnAgregar.Click
    
            'Obtengo el dato a agregar
            Dim dato As String = TextBox1.Text
    
            'Si el total de labels es igual a la cantidad
            'de elementos en la pila
            If pila.Count = labels.Length Then
                MessageBox.Show("Ya no se puede agregar valores")
                Exit Sub  'Salimos del evento
            End If
    
            'Inserta un nuevo elemento
            pila.Push(dato)
    
            For i = 0 To pila.Count - 1
                labels(i).Text = CStr(pila(i))
            Next
        End Sub

    Teniendo como resultado :

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    domingo, 30 de octubre de 2016 21:27
  • Podria hacer algo asi 

    Dim Etiquetas = Me.Controls.OfType(Of Label).OrderBy(Function(l) l.Name).ToList()

            For i = Etiquetas.Count - 1 To 1 Step -1
                Etiquetas(i).Text = Etiquetas(i - 1).Text
            Next
            Etiquetas(0).Text = "Nuevo Valor"

    sábado, 29 de octubre de 2016 14:51

Todas las respuestas

  • Podria hacer algo asi 

    Dim Etiquetas = Me.Controls.OfType(Of Label).OrderBy(Function(l) l.Name).ToList()

            For i = Etiquetas.Count - 1 To 1 Step -1
                Etiquetas(i).Text = Etiquetas(i - 1).Text
            Next
            Etiquetas(0).Text = "Nuevo Valor"

    sábado, 29 de octubre de 2016 14:51
  • Hola PeruRGP,

    Puedes usar la funcionalidad de la pila o Stack, dónde el último en entrar es el primero en salir.

      Dim labels() As Label  'Almacenará los labels
      Dim pila As New Stack
    
      Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
          'Almaceno los labels y los ordeno
          labels = Me.Controls.OfType(Of Label).OrderBy(Function(l) l.TabIndex).ToArray()
      End Sub

    En este caso uso el TabIndex (el cual es asignado un índice correlativo para la tabulación al crearse el control) para aplicar el orden ya que usando el name me resultaría :

    Label1
    Label10
    Label2

    Y en alguna acción :

      Private Sub btnAgregar_Click(sender As Object, e As EventArgs) Handles btnAgregar.Click
    
            'Obtengo el dato a agregar
            Dim dato As String = TextBox1.Text
    
            'Si el total de labels es igual a la cantidad
            'de elementos en la pila
            If pila.Count = labels.Length Then
                MessageBox.Show("Ya no se puede agregar valores")
                Exit Sub  'Salimos del evento
            End If
    
            'Inserta un nuevo elemento
            pila.Push(dato)
    
            For i = 0 To pila.Count - 1
                labels(i).Text = CStr(pila(i))
            Next
        End Sub

    Teniendo como resultado :

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    domingo, 30 de octubre de 2016 21:27