Désactiver les bouttons ou PictureBoxes à la chaine

Résolu
mbardet Messages postés 3 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 4 janvier 2006 - 4 janv. 2006 à 10:33
mbardet Messages postés 3 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 4 janvier 2006 - 4 janv. 2006 à 20:09
Bonjour,

Je suis sur un projet de Morpion 10 x 10, ce qui fait 100 cases et donc 100 éléments. Le prof a imposé 1 élément par case. Est-ce que je peux désactivé les 100 bouttons en une seule manipulation.
J'ai essayé :
Dim i As Integer
Dim Num As String
Dim PB As PictureBox = New PictureBox
For i = 0 To 100
Num = "PictureBox" + Cstr(i)
PB.Name = Num
PB.Enabled = False
Next

Et ça ne marche pas.
Merci de votre aide
Maelle

3 réponses

crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
4 janv. 2006 à 11:26
Si tu n'as que ces 100 pbox sur ta form, ceci devrait être mieux ...

Dim Ctrl as Control

for Each Ctrl In Me.Controls
If LCase$(Ctrl.Name) Like "picturebox*" Then Ctrl.Enabled = False
Next

CR
3
ScSami Messages postés 1488 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 3 décembre 2007 24
4 janv. 2006 à 11:56
La solution de Crenaud est la meilleur.
Mais note tout de même que si tu as 100 trucs, et que ces bidules sont numérotés à partir de 0, ben faut pas faire :
For i = 0 To 100
mais
For i = 0 To 99

!!!


Car, en entier, de 0 à 99 fait bien 100 machins alors que de 0 à 100 en fait 101 !

C'est un peu pareil d'ailleurs avec les bytes (octects) et autres caractères ASCII...
0 à 255 = 256
C'est le fameux problème de 1 et de 0 que tu rencontreras souvent en informatique car parfois on utilise des nombres réelles (à virgules) et d'autres fois des nombres entiers!

Quoi qu'il en soit : For Each varObject In VraiObjet
Permet de parcourir toutes les "instances" de "VraiObjet" qu'importe leur nombre exacte (ce qui évite donc de connaître ce nombre exacte!!!).

En l'occurence, ici on parcours tous les contrôles (boutons, champ texte, ...) qui sont sur ta feuille ["Me" faisant référence à la feuille, qu'importe son vrai nom et ".Controls" faisant appel à la collection de contrôle de cette feuille... autrement dit, à un objet contenant la référence à tous tes contrôles... bref.]
La variable objet "Ctrl" fait référence à une instance précise (selon l'état d'avancement de For Each). Ici, à un contrôle quelconque de la feuille donc.
Du coup, il faut tester le nom de ce contrôle pour s'assurer qu'il s'agisse bien d'un PictureBox (puisqu'il peut y avoir d'autres types de contrôles sur ta feuille... et donc, dans la collection Me.Controls).
Du coup, si s'en est bien un (si le nom du contrôle commence bien par "picturebox"), ben on le désactive.

Vala, j'espère que ces quelques explications superflues sur le code de Crenaud auront servies à t'aider plus qu'a t'embrouiller...

Enjoy

<hr size="2" width="100%">
( Si une réponse vous convient, cliquez sur le bouton "Réponse acceptée". )
3
mbardet Messages postés 3 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 4 janvier 2006
4 janv. 2006 à 20:09
Merci bcp, vos remarques m'ont bien aidé.

Maelle
0
Rejoignez-nous