VB2005 Nom de label dynamique ?? [Résolu]

koadig 3 Messages postés mardi 9 mai 2006Date d'inscription 25 mars 2007 Dernière intervention - 22 mars 2007 à 22:40 - Dernière réponse : koadig 3 Messages postés mardi 9 mai 2006Date d'inscription 25 mars 2007 Dernière intervention
- 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
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
koadig 3 Messages postés mardi 9 mai 2006Date d'inscription 25 mars 2007 Dernière intervention - 25 mars 2007 à 09:56
3
Merci
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.

Merci koadig 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 72 internautes ce mois-ci

Commenter la réponse de koadig
koadig 3 Messages postés mardi 9 mai 2006Date d'inscription 25 mars 2007 Dernière intervention - 22 mars 2007 à 22:45
0
Merci
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
Commenter la réponse de koadig
cs_fauve 661 Messages postés vendredi 2 décembre 2005Date d'inscription 23 mars 2011 Dernière intervention - 24 mars 2007 à 10:52
0
Merci
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.

@+
Commenter la réponse de cs_fauve

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.