Boucler sur le nom d'un objet

Résolu
cs_Loonis Messages postés 23 Date d'inscription jeudi 14 septembre 2006 Statut Membre Dernière intervention 30 mars 2007 - 23 mars 2007 à 11:52
cs_Loonis Messages postés 23 Date d'inscription jeudi 14 septembre 2006 Statut Membre Dernière intervention 30 mars 2007 - 27 mars 2007 à 11:00
Bonjour,

Je voudrai boucler les sur objet une picturebox de cette maniere

cible1.Enabled = False
        cible2.Enabled = False
        cible3.Enabled = False
        cible4.Enabled = False
        cible5.Enabled = False
        cible6.Enabled = False
        cible7.Enabled = False
...
Qui fonctionne.

J'ai utiliser cette methode
Dim i As Integer
        For i = 1 To nbCible
            Controls("cible" & i).Enabled = False
            Controls("cible" & i).Visible = False
        Next

Mais VB.NET me renvoie cette erreur  :

L'exeption nullReferenceExeption n'a pas été généré
La référence d'objet n'est pas définie à une instance d'un objet.

Merci de votre aide

9 réponses

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
26 mars 2007 à 11:13
Bonjour

Erreur d'adaptation :

Dim pctBox As New List(Of PictureBox) 'uniquement en .NET2
     pctBox.add(cible1)
     pctBox.add(cible2)
     pctBox.add(cible3)
     pctBox.add(cible4)
     pctBox.add(cible5)
     pctBox.add(cible6)
     pctBox.add(cible7)

Normalement, ça devrait mieux aller.
Je te rappel que cette solution n'est valable qu'en .NET2

Sinon, pour note :
If CType(Contr, Object).GetType.Name = "PictureBox" Then
peut s'écrire
If TypeOf Contr is PictureBox Then

Il est plus facile de batiser quelqu'un que de le convertir.(surtout en programmation)
VB (6, .NET1&2), C++, C#.Net1
Mon site
3
honginator Messages postés 28 Date d'inscription mercredi 20 septembre 2006 Statut Membre Dernière intervention 4 novembre 2008
23 mars 2007 à 11:57
Mois je te conseille d'utiliser un groupe de picturebox..

exemple
 for i = 0 to X                                            X l'index max de ton groupe,
cible(i).Enabled=True                                 il doit y a voir une propriété je pense pr la récupérer
Cible(i).Visible=True
next

Voila...
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
23 mars 2007 à 12:46
Bonjour


En .NET, pas de groupes de controls, je te propose un code du genre (à adapter à tes besoins) :


En attribut

private mLstChk as new list(of CheckBox) 'uniquement en .NET2

'Pour .NET1 :

private mLstChk as new ArrayList


Event Load :

mLstChk.add(ChkBx1)

mLstChk.add(ChkBx2)

mLstChk.add(ChkBx3)

mLstChk.add(ChkBx4)

mLstChk.add(ChkBx5)

mLstChk.add(ChkBx6)

...


Puis pour faire ta boucle :

for each lChk as CheckBox in mLstChk

'ou

for i as integer=0 to mLstChk.Count-1

Il est plus facile de batiser quelqu'un que de le convertir.(surtout en programmation)
VB (6, .NET1&2), C++, C#.Net1
Mon site
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
23 mars 2007 à 12:47
pas de goupe de controles en .Net....

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0

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

Posez votre question
troxsa Messages postés 553 Date d'inscription jeudi 28 novembre 2002 Statut Membre Dernière intervention 2 octobre 2016 1
23 mars 2007 à 17:10
Bonjour,

Vu les reponses j'suis pas sur d'avoir bien compris ! mais bon je tente ma chance ! :)

For
Each Contr
As Control
In Controls

         If
CType(Contr,
Object).GetType.Name =
"PictureBox"
Then
               Contr.Enabled =
False
               Contr.Visible =
False
         End
If
NextEn faite ce que je pense avoir compris par raport au code donné de Loonis, c'est qu'il souhaite (je pense) c'est d'appeler tous les controles PictureBox de les desactiver puis les rendres non visible (je me trompe peut etre)

Cordialement,

http://www.troxsa.info/
Le site qui ne parle qu'un seul langage, visual basic 2005
0
cs_Loonis Messages postés 23 Date d'inscription jeudi 14 septembre 2006 Statut Membre Dernière intervention 30 mars 2007
23 mars 2007 à 21:34
reBonjour,

Et merci de vos réponses.

Par contre je n'arrive toujours pas à résoudre mon probleme.

Concretement je voudrais enabler et visibler à false lors du load form grace à une boucle tous les pictureBox dont le nom commence par cible...

Ce code permet d'y parvenir mais il est tres fastidieux d'autant plus que j'aurai vrement besoins d'un boucle par la suite :
cible1.Enabled = False
cible2.Enabled = False
cible3.Enabled = False
cible4.Enabled = False
cible5.Enabled = False
cible6.Enabled = False
cible7.Enabled = False
...

J'ai dabord essayer la méthode de NHenry, je l'ai adapater à ma situation et j'en ai deduit cela :
Dim pctBox As List(Of PictureBox) 'uniquement en .NET2

pctBox.add(cible1) 'Erreur Déclaration inatendu de pctBox
pctBox.add(cible2) 'Idem
pctBox.add(cible3) '...
pctBox.add(cible4)
pctBox.add(cible5)
pctBox.add(cible6)
pctBox.add(cible7)

Private Sub Form1_Load...
For Each pctB As PictureBox In pctBox
pctB.Enabled = True
Next

Quant à la méthode de TroXsa

For Each Contr As Control In Controls
If CType(Contr, Object).GetType.Name = "PictureBox" Then
Contr.Enabled = True
Contr.Visible = True
End If
Next

J'ai tenté de remplacer "PictureBox" par "cible" ou encore cible lors du load de la form mais rien ne s'affiche.

Merci de votre aide.
0
troxsa Messages postés 553 Date d'inscription jeudi 28 novembre 2002 Statut Membre Dernière intervention 2 octobre 2016 1
23 mars 2007 à 23:45
C'est tres simple a faire avec le code que je tes donné il aurait falu que tu creuse un peux plus :) il y a juste un petit paramettre a changer pour que ça puisse fonctionner comme tu veux !

For
Each Contr
As Control
In Controls

   If Contr.Name.ToLower.IndexOf(
"cible".ToLower) >= 0
Then
         Contr.Visible =
False
         Contr.Enabled =
False
   End
If
Next
Voila en esperant que ça fonctionne maintenant !

http://www.troxsa.info/
Le site qui ne parle qu'un seul langage, visual basic 2005
0
cs_Loonis Messages postés 23 Date d'inscription jeudi 14 septembre 2006 Statut Membre Dernière intervention 30 mars 2007
27 mars 2007 à 11:00
Bonjour,

Merci pour ta réponse NHenry sa fonctionne.

Et avec une boucle du type :

For i As Integer = 0 To nbcible - 1
            pctBox(i).Enabled = True
            pctBox(i).Visible = True
        Next

Je peut résoudre mon probleme :)

Je vais quand même essayer de comprend le code de troXsA que je n'ai pas reussi à adapter du premier coup, je reposterai si je n'y arrive pas.
0
cs_Loonis Messages postés 23 Date d'inscription jeudi 14 septembre 2006 Statut Membre Dernière intervention 30 mars 2007
27 mars 2007 à 11:00
Et Merci à vous 2 pour vos réponses.
0
Rejoignez-nous