none
For Each controle As Control In panApostas.Controls RRS feed

  • Pergunta

  •    Em panel inseri 60 Labels e nomeie como lbl_01 a lbl_60, estão indexado e 0 a 59.

    Quando os pecorros no For Each (ver código abaixo), é lido a partir do primeiro (lbl_01, índice 0) até o quinto label (lbl_05 índice 5) em ordem crescente, após isto é lido em ordem decrescente, do ultimo Label (lbl_60 índice 59),  alternadamente  em ordem crescente.

    lbl_01, lbl_02, lbl_03, lbl_04, lbl_60, lbl_05, lbl_59, lbl_06, lbl_58......lbl_35, lbl_30, lbl_34, lbl_31, lbl_33, lbl_32.

    Como corrigir isto, quero que seja lido em ordem crescente do lbl_01 ao lbl_60.

            Dim Dezena As String = ""
    
            For Each controle As Control In panApostas.Controls
                If TypeOf controle Is Label Then
                    Dim lblDZ As Label = TryCast(controle, Label)
                    Debug.Print(lblDZ.Name.ToString)
    
                    If lblDZ.BackColor = Color.LightGreen Then
                        If Dezena.Length = 0 Then
                            Dezena = lblDZ.Name.Substring(4, 2)
                        Else
                            Dezena = Dezena & "; " & lblDZ.Name.Substring(4, 2)
                        End If
                    End If
                End If
            Next
    


    Sergio Ivanenko

    quinta-feira, 2 de agosto de 2018 22:04

Respostas

  • Resolvi criando um novo array do tipo Integer, onde adicionei os números da primeira array do tipo "string". A ordenação foi feita através da propriedade ".sort", da novo array.

    Sergio Ivanenko

    • Marcado como Resposta Ivanenko terça-feira, 7 de agosto de 2018 00:35
    terça-feira, 7 de agosto de 2018 00:35

Todas as Respostas

  • Boa noite amigo, veja se te ajuda.

    Gif

    Codigo

    Public Class Form1
    
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            Dim L As New List(Of Integer)
            For x As Integer = 0 To Me.Controls.Count - 1
                Application.DoEvents()
                If TypeOf Me.Controls.Item(x) Is Label Then
                    L.Add(x)
                End If
            Next
    
            Dim i As Integer = L.Count - 1
            Do While True
                Application.DoEvents()
                If i < 0 Then
                    Exit Do
                End If
                MsgBox(Me.Controls.Item(i).Name)
                i -= 1
            Loop
        End Sub
    End Class
    

    sexta-feira, 3 de agosto de 2018 01:36
  • Resolvi criando um novo array do tipo Integer, onde adicionei os números da primeira array do tipo "string". A ordenação foi feita através da propriedade ".sort", da novo array.

    Sergio Ivanenko

    • Marcado como Resposta Ivanenko terça-feira, 7 de agosto de 2018 00:35
    terça-feira, 7 de agosto de 2018 00:35