VB2005 Nom de label dynamique ??

Résolu
koadig Messages postés 3 Date d'inscription mardi 9 mai 2006 Statut Membre Dernière intervention 25 mars 2007 - 22 mars 2007 à 22:40
koadig Messages postés 3 Date d'inscription mardi 9 mai 2006 Statut Membre Dernière intervention 25 mars 2007 - 25 mars 2007 à 09:56
hello,
Je voudrais faire référence à un nom de label grace à une variable de type String.
Comment faire ?
exemple(pour un label du nom de "Kiki5") :
Dim x as string = "Kiki5"
x.text = "raté!"
ça marche pas. Bien sur, je comprends qu'il reste bloqué sur le coté String du "kiki5".
Dim x As Object = Kiki5
x.text = "gagné!"
la ça marche mais ça ne m'interesse pas.
voila ce que je voudrais (j'aurais du commencer par là) pour des labels nommés "lab1", "lab2", "lab3":
For j As Integer = 1 To 3
Dim MyNam As String=string.Format("lab{0}", j)
MyNam.BackColor = Color.red
Next j
pouvez vous m'aider ?
Merci

3 réponses

koadig Messages postés 3 Date d'inscription mardi 9 mai 2006 Statut Membre Dernière intervention 25 mars 2007
25 mars 2007 à 09:56
Merci à toi.
Ce que tu me repond est vraimetn passionnant.
Je note. (qu'est ce qui ne l'est pas pour un débutant ?)
Pour ce qui est de mon problème, je l'ai résolu differement.
Dim Con As Control
        Dim Lab As Label
        Dim ZeTransform As String
        
        For j As Integer = 1 To 18
            ZeTransform = j
            Con = Me.Controls(Me.Controls.IndexOfKey("Lab" + ZeTransform))
            Lab = CType(Con, Label)
            Lab.BackColor = Color.AliceBlue
        Next j

(Controls contient en fait la liste des contrôles)
voila.
Merci quand même.
3
koadig Messages postés 3 Date d'inscription mardi 9 mai 2006 Statut Membre Dernière intervention 25 mars 2007
22 mars 2007 à 22:45
hello, Je voudrais faire référence à un nom de label grace à une variable de type String. Comment faire ?
voila ce que je voudrais (j'aurais du commencer par là) pour des labels nommés "lab1", "lab2", "lab3":
For j As Integer = 1 To 3
Dim MyNam As String=string.Format("lab{0}", j)
MyNam.BackColor = Color.red
Next j pouvez vous m'aider ?
Merci
0
cs_fauve Messages postés 661 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 23 mars 2011 8
24 mars 2007 à 10:52
Salut,

J'ai trouvé cà :

Tout d'abord, il faut mettre çà juste après Public Class Form1 :

Dim Browsers As New System.Collections.Generic.List(Of Label)()

Ensuite, voici la fonction qui va récupérer tous les labels présent sur ta Form (à appeler dans la procédure Form_Load) :

Sub trouver_label() ' Pour trouver tous les labels d'une Form
     For Each objet As Object In Me.Controls ' Parcours tous les controls de ta form
         If objet.GetType.Name = "Label" Then ' Si c'est un Label
             Browsers.Add(objet) ' on le rajoute dans la collection
         End If
     Next
End Sub

et enfin, voici la fonctions qui permet de modifier la propriété d'un label en fonction de son nom :

Sub Label_Text(ByVal Label_Name As String, ByVal Texte AsString) ' Propriété Text du Label
    ' Label_Name : Nom du Label ('toto' pour reprendre ton exemple)
    ' Texte : nom du texte que doit affiche le label
    For i As Integer = 0 To Browsers.Count - 1 ' Parcours de toute la collection 
        If Browsers(i).Name = Label_Name Then ' Si un label correspond au nom passé en paramètre
            Browsers(i).Text = Texte ' On modifie la propriété Text du Label avec le 2° paramètre
        End If
    Next
End Sub

Exemple : Pour modifier un Label voici comment appeler la fonction :

Label_Text("toto","Salut")

Ainsi, le Label qui s'appelle 'toto'  va afficher 'Salut'.

Voici le Code Complet :

Public Class Form1

    Dim Browsers As New System.Collections.Generic.List(Of Label)() ' Collection de labels

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        trouver_label() ' Répertorier tous les labels de la Form dans la collection

    End Sub

    Sub Label_Text(ByVal Label_Name As String, ByVal Text As String) ' Modifier la propriété Text du Label

        For i As Integer = 0 To Browsers.Count - 1 ' Parcours toute la collection
            If Browsers(i).Name = Label_Name Then ' Si le nom du label correspond au nom du 1° paramètre
                Browsers(i).Text = Text ' On modifie la propriété Text du label avec le 2° paramètre
            End If
        Next

    End Sub

    Sub trouver_label() ' Pour trouver tous les labels d'une Form

        For Each objet As Object In Me.Controls ' Parcours tous les controls de ta form
            If objet.GetType.Name = "Label" Then ' Si c'est un Label
                Browsers.Add(objet) ' on le rajoute dans la collection
            End If
        Next

    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        ' Lors du clic sur Button1 on appelle la fonction Label_Text

        Label_Text("toto", "Salut") ' Après cette fonction, le label 'toto' va afficher 'Salut'

    End Sub

End Class, ----
(Coloration syntaxique automatique par Kenji)

Si la réponse te convient : accepter la réponse    sinon laisse un message pour dire ce qui ne va pas.

@+
0
Rejoignez-nous