Acces aux controles

Résolu
renocmoa Messages postés 134 Date d'inscription mardi 7 septembre 2004 Statut Membre Dernière intervention 10 mai 2012 - 21 déc. 2005 à 19:17
renocmoa Messages postés 134 Date d'inscription mardi 7 septembre 2004 Statut Membre Dernière intervention 10 mai 2012 - 21 déc. 2005 à 20:47
bonsoir,

comment fait on pour avoir acces à un controle par son nom issue d'une string ex :

for i=1 to 5
progressbar & cstr(i).value=10
next

merci

reno

10 réponses

Utilisateur anonyme
21 déc. 2005 à 20:38
Ah!!! Fallait présiser dés le début que c'était tu .net.
On s'embrouille tous là.

For i As Integer = 1 To 5
CType(Me.Controls("ProgressBar" & CStr(i)), System.Windows.Forms.ProgressBar).Value = 10
Next i

Pour un groupe de contrôle, il faut laisser tombre le concepteur windows form et passer en dynamique.
Un petit example, mais bien d'autres sont possible.

Dim ProgressBarList As New System.Collections.Generic.List(Of System.Windows.Forms.ProgressBar)

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

ProgressBarList.Add(NewProgressBar(New System.Drawing.Point(10, 10), New System.Drawing.Size(100, 23), 100))
ProgressBarList.Add(NewProgressBar(New System.Drawing.Point(10, 40), New System.Drawing.Size(100, 23), 100))
ProgressBarList.Add(NewProgressBar(New System.Drawing.Point(10, 70), New System.Drawing.Size(100, 23), 100))

For Each ProgressBar As System.Windows.Forms.ProgressBar In ProgressBarList
ProgressBar.Value = 10
Next

End Sub

Private Function NewProgressBar(ByVal Location As System.Drawing.Point, ByVal Size As System.Drawing.Size, ByVal Maximum As Integer) As System.Windows.Forms.ProgressBar
Dim ProgressBar As New System.Windows.Forms.ProgressBar
ProgressBar.Location = Location
ProgressBar.Size = Size
ProgressBar.Maximum = Maximum
Me.Controls.Add(ProgressBar)
Return ProgressBar
End Function

Kenji
<hr size="2" width="100%">
Merci de cliquer sur "Réponse acceptée" si une réponse vous convient.
3
Utilisateur anonyme
21 déc. 2005 à 19:40
Bonjour,

La propriété Controls du contrôle parant
Ca donne (si les progressbar suont sur la form):

For i = 1 To 5
Me.Controls(progressbar & CStr(i)).Value = 10
Next

Kenji
<hr size="2" width="100%">
Merci de cliquer sur "Réponse acceptée" si une réponse vous convient.
0
renocmoa Messages postés 134 Date d'inscription mardi 7 septembre 2004 Statut Membre Dernière intervention 10 mai 2012
21 déc. 2005 à 19:52
merci de la réponse mais
il me dit ça....

'ProgressBar' est un type et ne peut pas être utilisé en tant qu'expression.

reno
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
21 déc. 2005 à 20:01
utilise un groupe de contrôle, c'est bien plus simple !!!

Sinon :
For i = 1 To 5
Me.Controls("progressbar" & CStr(i)).Value = 10
Next

Mais je déconseille !

_____________________________________________________________________
DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) tout en français : www.ProgOtoP.com/popapi/
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
21 déc. 2005 à 20:04
Salut
Essaye cette syntaxe :
Me.Controls("progressbar" & CStr(i)).Value = 10

Sinon, mieux vaut créer un seul control initial ProgressBar et l'indexer (entre 0 et < 254).
Tu pourra simplement lui faire appel avec
Me.ProgressBar(i).Value = 10

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
21 déc. 2005 à 20:05
Les grands esprits se rencontrent, Dark !
0
renocmoa Messages postés 134 Date d'inscription mardi 7 septembre 2004 Statut Membre Dernière intervention 10 mai 2012
21 déc. 2005 à 20:05
en fait c'est :

ctype(Me.Controls("progressbar" & CStr(i)),progressbar).Value = 10

merci,

reno
0
renocmoa Messages postés 134 Date d'inscription mardi 7 septembre 2004 Statut Membre Dernière intervention 10 mai 2012
21 déc. 2005 à 20:10
en fait aucun ne march on doit quand même pouvoir en .net faire refférence à un controle par son nom!!

en vba Me("dd") marche super ...

je vais surement indexé mais je voudrais quand même savoir...

reno
0
renocmoa Messages postés 134 Date d'inscription mardi 7 septembre 2004 Statut Membre Dernière intervention 10 mai 2012
21 déc. 2005 à 20:20
jack tu pourrais m'en dire plus sur l'indexation

merci

reno
0
renocmoa Messages postés 134 Date d'inscription mardi 7 septembre 2004 Statut Membre Dernière intervention 10 mai 2012
21 déc. 2005 à 20:47
en fait marche pas super ça plante sur

me.controls("progressbar & cstr(i))

Cast de la chaine "progressbar1" en type integer non valide

????
reno
0
Rejoignez-nous