Création dynamique de boutons vb.net 2003

Soyez le premier à donner votre avis sur cette source.

Vue 9 368 fois - Téléchargée 799 fois

Description

Voilà, je cherchais un source pour créer une application nécessitant la création d'un nombre de bouton variable.
Comme j'ai rien trouvé, à partir de quelques infos je l'ai créé.
Une fois fini, je me suis dit que ca pouvait servir à quelqu'un alors j'ai fait une version semi tuto.

Dans l'appli, y a deux objets l'objet bouton et conteneur de bouton.
On trappe l'événement de l'objet bouton

Les boutons se placent suivant leur nombre et le paramétrage du nombre de bouton par ligne.

Dans l'exemple, les boutons sont crées suivant leur numéro et la variable "tarif" correspond au numéro de bouton, mais vous pouvez mettre une valeur single.
voila je crois que j'ai tout dit, juste je crois que je vais vous livrer prochainement une version suivant une base Access... si j'ai le temps.

Source / Exemple :


' dans les déclarations 
  Dim WithEvents MyControlArray As Buttonarray

' dans le load de la fenêtre principale
  MyControlArray = New Buttonarray(Me)

' Au moment de d'ajouter un bouton 
'  Propriété .AddNewButton(taille_x, taille_y, pos_x, pos_y, "Nom", "Texte", Valeur_Tarif)
            MyControlArray.AddNewButton(taille_x, taille_y, pos_x_espace + base_x * (taille_x + 5), pos_y_espace + (base_y * 5) + (base_y) * taille_y, "Bouton n° " & v.ToString, "Nom_Btn" & v.ToString, v)

' Gestion de l'évènement générer par les boutons 
Private Sub ButtonArray_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyControlArray.Ev_Event
        ' Mettre votre action ici 
        MsgBox("Bouton Cliqué est " & CType(CType(sender, ClassBtn).texte, String) & vbCr & "Valeur " & CType(CType(sender, ClassBtn).tarif, String))
     
        Valeur_Prix = CType(sender, ClassBtn).tarif

End Sub

Conclusion :


Voila si vous avez des questions n'hésitez pas.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Adn56
Messages postés
1220
Date d'inscription
jeudi 24 mai 2007
Statut
Membre
Dernière intervention
28 septembre 2013
1 -
salut, qu'elles sont les avantages de tes classes par rapport à un création de control dynamique de ce style :

Public Sub init_BP(ByVal nb_carte As Integer)
' création dynamique des controls picturebox pour les BP ' pour plusieurs cartes nb_carte = 2,3 ou 4 (ou 1 si qu'une seule bien sûr)
For x As Integer = 1 To nb_carte ' création des controls sur y

For y As Integer = 0 To 7 ' création des controls sur X
' Création du BP pictureBox
Dim BP As PictureBox = New PictureBox
With BP
.Name = "bp" & x & "-" & y ' nom des boutons : bp0-0 à bp3-7
.Size = New Size(47, 52) 'taille des boutons
.Location = New Point((x - 1) * 100, 10 + y * BP.Size.Height) 'place les boutons x puis y
.Image = bp_off
' si nb_carte = 1 alors x=0, si =2 alors x=100 etc...
' sur Y chaque bouton se place 10px en dessous du précédent car * par y, donc y=10, puis 52*y+10. 10 est un esapce entre chaque bouton
.Tag = (x - 1) & (y + 1) 'définie son tag pour le reconnaitre, je concaténe l'adresse de la carte avec son numéro de sortie à allumer (c'est un string)
' donc 01 à 08 pour la carte adr 0, puis de 11 à 18, 21 à 28 et enfin 31 à 38
.Cursor = System.Windows.Forms.Cursors.Hand 'modifie le curseur lors du survol
End With

AddHandler BP.Click, AddressOf PictureBox_Click 'génére ou récupére l'évenement du clic
jcvid2
Messages postés
6
Date d'inscription
mardi 18 juillet 2006
Statut
Membre
Dernière intervention
8 avril 2010
-
Ba en fait la valeur associée au bouton peut être définie à souhait. Dans ma version initiale, j'ai même plusieurs valeurs : tarif classe... pour chaque bouton.
Mais ta solution est intéressante

En plus je vais améliorer les objets pour en laisser moins dans le principal

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.