none
Indexer Label RRS feed

  • Question

  • Bonjour a tous et toutes.

    Je suis sous Visual 2008. J'essai d'indexer des Label, et je n'arrive pas a le faire avec cette version de Visual. J'ai besoin de 35 Label. Je veux pouvoir sélectionner un label et y entrer du texte. Par exemple labelJour(12).text=""un".

    1° Comment entrer le nom du label ? Jour(1), Jour(2) etc. ne fonctionne pas

    2° Comment indexer les Label.

    Merci de votre aide et bonne journée

    lundi 29 août 2016 11:24

Réponses

  • La meilleure façon à mon opinion est de faire un tableau de contrôles.

    Public Class Form1
        Private MaListeDeTextBox(7) As TextBox
    
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            Dim newTextBox As TextBox
    
            'On créé une nouvelle TextBox avec une position incrémentée et on l'ajoute à la Form
            For i As Integer = 1 To 7
                newTextBox = New TextBox
                newTextBox.Size = New Drawing.Size(100, 20)
                'Positionnement à spécifier
                newTextBox.Location = New Point(50, 10 + 25 * (i - 1))
                newTextBox.Name = "TextBox" & i
                newTextBox.Text = newTextBox.Name
                'Ajout d'un Handler pour la modification
                AddHandler newTextBox.TextChanged, AddressOf TextBox_TextChanged
                'On garde la référence dans l'Array
                MaListeDeTextBox(i) = newTextBox
                'Ajout à la liste des Controls de la Form
                Me.Controls.Add(newTextBox)
            Next
        End Sub
    
        'Le handler de la modification... pratique pour tester si l'array est bien dans l'ordre...
        Private Sub TextBox_TextChanged(sender As System.Object, e As System.EventArgs)
            'Lors d'une entrée le nom de la TextBox est affiché comme titre de la form
    
            Dim box As TextBox = DirectCast(sender, TextBox)
            Me.Text = box.Name & ": " & box.Text
        End Sub
    End Class

    et pour modifier une TextBox par exemple

     Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            MaListeDeTextBox(TBAModifier).Text = "Modification TextBox " & TBAModifier
        End Sub



    lundi 29 août 2016 12:24

Toutes les réponses

  • La meilleure façon à mon opinion est de faire un tableau de contrôles.

    Public Class Form1
        Private MaListeDeTextBox(7) As TextBox
    
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            Dim newTextBox As TextBox
    
            'On créé une nouvelle TextBox avec une position incrémentée et on l'ajoute à la Form
            For i As Integer = 1 To 7
                newTextBox = New TextBox
                newTextBox.Size = New Drawing.Size(100, 20)
                'Positionnement à spécifier
                newTextBox.Location = New Point(50, 10 + 25 * (i - 1))
                newTextBox.Name = "TextBox" & i
                newTextBox.Text = newTextBox.Name
                'Ajout d'un Handler pour la modification
                AddHandler newTextBox.TextChanged, AddressOf TextBox_TextChanged
                'On garde la référence dans l'Array
                MaListeDeTextBox(i) = newTextBox
                'Ajout à la liste des Controls de la Form
                Me.Controls.Add(newTextBox)
            Next
        End Sub
    
        'Le handler de la modification... pratique pour tester si l'array est bien dans l'ordre...
        Private Sub TextBox_TextChanged(sender As System.Object, e As System.EventArgs)
            'Lors d'une entrée le nom de la TextBox est affiché comme titre de la form
    
            Dim box As TextBox = DirectCast(sender, TextBox)
            Me.Text = box.Name & ": " & box.Text
        End Sub
    End Class

    et pour modifier une TextBox par exemple

     Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            MaListeDeTextBox(TBAModifier).Text = "Modification TextBox " & TBAModifier
        End Sub



    lundi 29 août 2016 12:24
  • Merci.
    lundi 29 août 2016 12:41
  • Je pense qu'une façon encore plus simple est de tout simplement déclarer une variable en tant que Lable  Dim etiquette(10) as label. Puis créé les Label requis etiquette(1)=Label1, etiquette(2)=Label2 ainsi de suite. On peut ensuite avoir une boucle qui va nous permettre de modifier les différentes options et en plus nous donner accès aux "Lable" comme on veut. Je sais que j'ai mis du temps a trouver mais vaut mieux tard que jamais je suppose. Merci encore pour votre suggestion.

    vendredi 9 septembre 2016 00:21