Comment utiliser une array ? Donner une action a plusieur boutons avec 1 instruc

cs_elchiko Messages postés 19 Date d'inscription samedi 1 janvier 2011 Statut Membre Dernière intervention 30 octobre 2011 - 30 oct. 2011 à 00:34
cs_ShayW Messages postés 3258 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 - 30 oct. 2011 à 17:58
Bonsoir, je suis en train de dev un petit logiciel, en VB.NET sur VS2010 Ultimate, mais j'ai un petit problème ....

Donc voila, j'ai des séries de boutons (3 séries de 50 boutons), et une trackbar ....

J'aimerais que la série 1 de boutons (les 50 premiers) se masquent des que la trackbar est a 0, et j'ai pas vraiment envi d'écrire ça:

If TrackBar1.Value = 0 Then
            Button1.Visible = False
            Button2.Visible = False
            Button3.Visible = False
            Button4.Visible = False
            Button5 .....

Y'a t'il pas un moyen de faire ça:
If TrackBar1.Value = 0 Then
Button1 + button2 + button 3 + (etc...).Visible = False
Ou une array, mais je sait pas trop m'en servir ...

Si quel qu'un pourrais m'aider, merci.

6 réponses

NHenry Messages postés 15025 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 26 novembre 2022 157
30 oct. 2011 à 00:58
Bonjour,

Tu peux utiliser un tableau ou une collection :
Dim MaListe as New List(Of Button)
MaListe.Add(Button1)
MaListe.Add(Button2)
MaListe.Add(Button3)

Sinon, en complément tu peux aussi voir comme charger dynamiquement les boutons et gérer leurs événements.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
0
Utilisateur anonyme
30 oct. 2011 à 11:04
Bonjour,

Il y a une astuce qui consiste à placer tous tes boutons sur un panel.
En affectant false à la propriété visible du panel, tes boutons ne seront plus visibles.

Bonne prog.
0
cs_ShayW Messages postés 3258 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 55
30 oct. 2011 à 14:45
Salut elchiko

manque de détails
As tu déja placé les boutons sur la form
ou veux tu les créer dynamiquement ?
0
cs_elchiko Messages postés 19 Date d'inscription samedi 1 janvier 2011 Statut Membre Dernière intervention 30 octobre 2011
30 oct. 2011 à 16:26
Bonjours, merci de vos réponses.
Ils-y sont déjà, les 50 l'un sur l'autre, genre la série 1 sur la 2 et la 2 sur la 3 (Exactement superposées).

La série 2 & 3 sont déjà sur visible:false

mais en fait, voila je m'explique, j'ai 3 boutons, pour charger les séries, et une trackbar qui fait le même effet ... Donc, obligé de faire des listes avec visible:true/false
0

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

Posez votre question
cs_ShayW Messages postés 3258 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 55
30 oct. 2011 à 17:54
Salut
si tes boutons sont nommés
button1, button2, ...button150
essayes ça
Attention fonctionne si les boutons sont nommés button1 etc
Private Sub HideButtons(ByVal serieno As Integer, ByVal flaghide As Boolean)
        Dim i As Integer
        Dim iend As Integer
        Dim numero As Integer
        iend = (serieno - 1) * 50 + 50
        For Each cont As Control In Me.Controls
            If TypeOf (cont) Is Button Then
                Integer.TryParse(DirectCast(cont, Button).Name.Substring(DirectCast(cont, Button).Name.IndexOf("n") + 1), numero)
                If numero <= iend Then
                    DirectCast(cont, Button).Visible = flaghide
                End If

            End If
 Next

pour utiliser
HideButtons(1, False)
ou HideButtons(2, true)
0
cs_ShayW Messages postés 3258 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 55
30 oct. 2011 à 17:58
je rectifie

Private Sub HideButtons(ByVal serieno As Integer, ByVal flaghide As Boolean)
        Dim iend As Integer
        Dim numero As Integer
        iend = (serieno - 1) * 50 + 50
        For Each cont As Control In Me.Controls
            If TypeOf (cont) Is Button Then
                Integer.TryParse(DirectCast(cont, Button).Name.Substring(DirectCast(cont, Button).Name.IndexOf("n") + 1), numero)
                If numero <= iend Then
                    DirectCast(cont, Button).Visible = flaghide
                End If
            End If
        Next
    End Sub
0