Declaration Paint pour plusieur bouton [Résolu]

Messages postés
33
Date d'inscription
jeudi 21 août 2003
Statut
Membre
Dernière intervention
20 février 2010
- - Dernière réponse : MASTERVINCE
Messages postés
33
Date d'inscription
jeudi 21 août 2003
Statut
Membre
Dernière intervention
20 février 2010
- 26 janv. 2010 à 14:34
Bonjour,

Voila j'ai récupéré un morceau de code pour rendre mes boutons ronds:

Private Sub Button1_Paint(ByVal sender As Object, _
          ByVal e As System.Windows.Forms.PaintEventArgs) Handles Button1.Paint

        Dim buttonPath As New System.Drawing.Drawing2D.GraphicsPath
        Dim newRectangle As Rectangle = Button1.ClientRectangle
        newRectangle.Inflate(-10, -10)
        newRectangle.Inflate(1, 1)
        buttonPath.AddEllipse(newRectangle)
        e.Graphics.DrawPath(Pens.Black, buttonPath)
        Button1.Region = New System.Drawing.Region(buttonPath)

    End Sub


J'ai plusieurs Boutons que je veux rendre rond dans ma form. Dois-je taper ce code pour chaque bouton ou il y a t il moyen de declarer une fois le code pour mes X boutons ?


Merci.

Vince [Mode: Bonne humeur]


Bidouiller n'est pas un crime ^^
Afficher la suite 

13 réponses

Meilleure réponse
Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
57
3
Merci
suffit d'ajouter tes boutons là:

Handles Button1.Paint, Button2.Paint, Button3.Paint

et éviter les réferences en dur comme:

Button1.Region =

ou

Button1.ClientRectangle

Renfield - Admin CodeS-SourceS - MVP Visual Basic

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 189 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Renfield
Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
57
3
Merci
du coup:
    Private Sub Button1_Paint(ByVal sender As Object, _
              ByVal e As System.Windows.Forms.PaintEventArgs) Handles Button1.Paint, Button2.Paint, Button3.Paint

        Dim buttonPath As New System.Drawing.Drawing2D.GraphicsPath
        Dim newRectangle As Rectangle = CType(sender, Windows.Forms.Button).ClientRectangle
        newRectangle.Inflate(-10, -10)
        newRectangle.Inflate(1, 1)
        buttonPath.AddEllipse(newRectangle)
        e.Graphics.DrawPath(Pens.Black, buttonPath)
        CType(sender, Windows.Forms.Button).Region = New System.Drawing.Region(buttonPath)
    End Sub



Renfield - Admin CodeS-SourceS - MVP Visual Basic

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 189 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Renfield
Messages postés
33
Date d'inscription
jeudi 21 août 2003
Statut
Membre
Dernière intervention
20 février 2010
0
Merci
Merci pour ta reponse et ta disponibilité !


Bidouiller n'est pas un crime ^^
Commenter la réponse de MASTERVINCE
Messages postés
33
Date d'inscription
jeudi 21 août 2003
Statut
Membre
Dernière intervention
20 février 2010
0
Merci
Lol encore moi, ta réponse me parait logique et elle l'est mais ... Comment eviter de declarer du dur ?
Dois je obligatoirement créer un groupe pour lui affecter les differents format ?

Renfield t'arraches pas les cheveux ... Promis si tu passes dans le 49 je te paye une bière ou plusieurs

Vince



Bidouiller n'est pas un crime ^^
Commenter la réponse de MASTERVINCE
Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
57
0
Merci
sender représente l'objet qui a déclenché l'evenement.

Button1 quand il s'agit de dessiner le Button1, etc.


Renfield - Admin CodeS-SourceS - MVP Visual Basic
Commenter la réponse de Renfield
Messages postés
33
Date d'inscription
jeudi 21 août 2003
Statut
Membre
Dernière intervention
20 février 2010
0
Merci
Petard ! ce fameux Sender oki ba alors là ca m'eclaire sur pas mal de chose ...Arf je suis bon pour reprendre tout mon code...
La lumière vient de s'allumer... Pink Floyd continue a jouer ... Et ce bougre devant son ecran vient de comprendre ! AAAAhhhhh !
Je me bouffe des tutos à longueur de journée et pas hein de dit clairement" Sender c'est l'objet qui declenche l'évenement...

Ta réponse m'a ouvet les yeux sur beaucoup de chose que j'ai pu ecrire sans savoir pourquoi.

Merki a lot !

Bidouiller n'est pas un crime ^^
Commenter la réponse de MASTERVINCE
Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
57
0
Merci
ravi que ca serve, et que tu progresse du coup...

Renfield - Admin CodeS-SourceS - MVP Visual Basic
Commenter la réponse de Renfield
Messages postés
33
Date d'inscription
jeudi 21 août 2003
Statut
Membre
Dernière intervention
20 février 2010
0
Merci
Dites moi, ce que je viens d'apprendre me plait bien mais vous vous imaginez bien me pause d'autre soucis ^^.

Que mettre dans le handles pour recuperer des button créés avec un code:

Me.Controls.Add(Appareil(i))

J'ai une boucle la dessus donc je créer plusieurs boutons qui se noment tout seul ( comme des grands :p ).
Le probleme c'est que si je veux generaliser un evenement pour tous mes boutons ba .... Je sais pas quoi mettre dans le Handles... Ni même comment appeler un evenement pour un bouton

Vince


Bidouiller n'est pas un crime ^^
Commenter la réponse de MASTERVINCE
Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
57
0
Merci
voir AddHandler

permet de lier dynamiqueent un controle a un Gestionnaire d'evenement

Renfield - Admin CodeS-SourceS - MVP Visual Basic
Commenter la réponse de Renfield
Messages postés
33
Date d'inscription
jeudi 21 août 2003
Statut
Membre
Dernière intervention
20 février 2010
0
Merci
Merci ;) Je regarde ça

Vince


Bidouiller n'est pas un crime ^^
Commenter la réponse de MASTERVINCE
Messages postés
33
Date d'inscription
jeudi 21 août 2003
Statut
Membre
Dernière intervention
20 février 2010
0
Merci
Re,RE,...

J'ai trouve un morceau de code que j'ai adapté pour faire un essai. Cela fonctionne mais ca va pas etre simple a mettre en oeuvre tout ça ^^.

      If SActif(i) = True Then Me.Controls.Add(Choix(i)) : Me.Controls.Add(Etat(i))
                Etat(i).Tag = i
                AddHandler Etat(i).Click, AddressOf CheckBox1_Click
            Next

        Catch ex As Exception

        End Try

    End Sub
    Private Sub CheckBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Select sender.tag
            Case 0
                MsgBox("valeur 0")
            Case 1
                MsgBox("valeur 1")
            Case 2
                MsgBox("valeur 2")
            Case 3
                MsgBox("valeur 3")
        End Select
        MsgBox(Me.Controls.Count)
    End Sub


La sortie est bonne. Ce code te parait il correct ?

Merci

Vince


Bidouiller n'est pas un crime ^^
Commenter la réponse de MASTERVINCE
Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
57
0
Merci
yep, c'est cela, pile poil.

Renfield - Admin CodeS-SourceS - MVP Visual Basic
Commenter la réponse de Renfield
Messages postés
33
Date d'inscription
jeudi 21 août 2003
Statut
Membre
Dernière intervention
20 février 2010
0
Merci
Thanks !

Vince


Bidouiller n'est pas un crime ^^
Commenter la réponse de MASTERVINCE