Variable mémoire [Résolu]

Signaler
Messages postés
5
Date d'inscription
mardi 19 juin 2007
Statut
Membre
Dernière intervention
19 septembre 2008
-
Messages postés
840
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
7 janvier 2009
-
Salut à tous

Je suis un ancien Visual FoxPro et je débute sur VB.NET

J'ai une série d'objet de type "Label" dans ma Form.

Si je veu attriburer des valeur à ces "Label" avec FoxPro je doit tout simplement ecrire ceci :

For i=1 to 10
   x = LTrim ( Str ( i ) )
   MaForm.Label&x..Caption="Etiquette n° "+Str( i )   
EndFor

NB : ".Caption" c'est l'équivalent FoxPro du ".Text" en VB

Lors de l'excution : Le programme replace le "&x" par sa valeur réél. Donc ça devient (par exemple) MaForm.Label5.Caption="Etiquette n° "+Str( i )

Et ce qu'il y a un moyen de faire la même chose en VB.NET ?

Merci d'avance pour vos réponses

SLITI Skander
www.deluxe-informatique.com

8 réponses

Messages postés
5
Date d'inscription
mardi 19 juin 2007
Statut
Membre
Dernière intervention
19 septembre 2008

c bon, j'ai résolu le problème grace au lien de "Gilardg"

Voici la solution :

Dim i As Integer

Dim

oL() As
Label = {Label1, Label2, Label3, Label4, Label5}For
i = 1 To 5

   oL(i - 1).Text = "Etiquette "
+ Str(i)

Next

Merci a tous

SLITI Skander
www.deluxe-informatique.com
Messages postés
3275
Date d'inscription
jeudi 3 avril 2008
Statut
Membre
Dernière intervention
14 septembre 2014
4
Messages postés
840
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
7 janvier 2009
9
Salut,
On vient justement de parler de ton problème sur un autre post. Réponse donné par jrivet je crois:

For i As Integer = 0 To 10
    Dim Label As Label = MaForm.Controls("Label" & x)
    Label.Text = "Etiquette n° " & i
Next
Messages postés
5
Date d'inscription
mardi 19 juin 2007
Statut
Membre
Dernière intervention
19 septembre 2008

Merci pour ta réponse Kevin mais ça marche pas !

En faite Controls(nVal As Integer) n'accepte que des entiers comme paramètre. on ne peut pas mettre "Label"&x dedans

Je suis toujour bloqué :(

SLITI Skander
www.deluxe-informatique.com
Messages postés
840
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
7 janvier 2009
9
"En faite Controls(nVal As Integer) n'accepte que des entiers comme paramètre"

Beu... t'es sur VB2008?
Chez moi je peux retrouver un contrôle grâce à son nom: http://msdn.microsoft.com/fr-fr/library/s1865435.aspx

Sinon, il y a aussi la méthode Find de la collection de contrôles...
Dim MyLabel As Label = Me.Controls.Find("Label5")
Messages postés
840
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
7 janvier 2009
9
Oui ça c'est la solution que j'avais proposé moi aussi, mais la solution de jrivet me semblait nettement meilleure dans la plupart des cas. Regarde ça, c'est le post ou on parlais justement de ça comme j'ai dis plus haut:
http://www.vbfrance.com/forum/sujet-NOM-PICTUREBOX-DANS-STRING_1202054.aspx?p=2
Messages postés
5
Date d'inscription
mardi 19 juin 2007
Statut
Membre
Dernière intervention
19 septembre 2008

Salut Kevin

Effectuvement je débute sur VB2008 et c'est la première fois que je dévloppe sur VB.

C'est bizzard qu'il y a pas de compatibilité assendante entre les differentes version de VB !

J'ai essyé Dim MyLabel As Label = Me.Controls.Find("Label5"). ça ne marche pas en VB2008.

Voila le message d'erreur :

Error 1 'Find' is not a member of 'System.Windows.Forms.Control.ControlCollection'. MaForm.vb 99 32 MonProjet

Merci encore

SLITI Skander
www.deluxe-informatique.com
Messages postés
840
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
7 janvier 2009
9
Non mais tu comprend pas, le truc c'est que moi aussi je suis sur VB2008 (express)

La compatibilité ascendante existe, ce n'est pas le problème...

J'ai testé :
Dim MyLabel As Label = Me.Controls.Find("Label1")
MyLabel.Text = "Salut"
ça fonctionne parfaitement

C'est vraiment étrange cette histoire