Declaration Paint pour plusieur bouton

Résolu
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 à 10:03
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 ^^

13 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
26 janv. 2010 à 10:18
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
3
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
26 janv. 2010 à 10:56
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
3
MASTERVINCE Messages postés 33 Date d'inscription jeudi 21 août 2003 Statut Membre Dernière intervention 20 février 2010 1
26 janv. 2010 à 10:26
Merci pour ta reponse et ta disponibilité !


Bidouiller n'est pas un crime ^^
0
MASTERVINCE Messages postés 33 Date d'inscription jeudi 21 août 2003 Statut Membre Dernière intervention 20 février 2010 1
26 janv. 2010 à 10:49
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 ^^
0

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

Posez votre question
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
26 janv. 2010 à 10:55
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
0
MASTERVINCE Messages postés 33 Date d'inscription jeudi 21 août 2003 Statut Membre Dernière intervention 20 février 2010 1
26 janv. 2010 à 11:02
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 ^^
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
26 janv. 2010 à 11:07
ravi que ca serve, et que tu progresse du coup...

Renfield - Admin CodeS-SourceS - MVP Visual Basic
0
MASTERVINCE Messages postés 33 Date d'inscription jeudi 21 août 2003 Statut Membre Dernière intervention 20 février 2010 1
26 janv. 2010 à 13:55
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 ^^
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
26 janv. 2010 à 14:01
voir AddHandler

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

Renfield - Admin CodeS-SourceS - MVP Visual Basic
0
MASTERVINCE Messages postés 33 Date d'inscription jeudi 21 août 2003 Statut Membre Dernière intervention 20 février 2010 1
26 janv. 2010 à 14:06
Merci ;) Je regarde ça

Vince


Bidouiller n'est pas un crime ^^
0
MASTERVINCE Messages postés 33 Date d'inscription jeudi 21 août 2003 Statut Membre Dernière intervention 20 février 2010 1
26 janv. 2010 à 14:27
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 ^^
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
26 janv. 2010 à 14:29
yep, c'est cela, pile poil.

Renfield - Admin CodeS-SourceS - MVP Visual Basic
0
MASTERVINCE Messages postés 33 Date d'inscription jeudi 21 août 2003 Statut Membre Dernière intervention 20 février 2010 1
26 janv. 2010 à 14:34
Thanks !

Vince


Bidouiller n'est pas un crime ^^
0
Rejoignez-nous