2009-06-12 9 views

Répondre

30

Si vous ne voulez pas créer un contrôle personnalisé, vous pouvez essayer ceci:

crochet jusqu'à l'événement de peinture de l'étiquette.

void label1_Paint(object sender, PaintEventArgs e) 
{ 
    ControlPaint.DrawBorder(e.Graphics, label1.DisplayRectangle, Color.Blue, ButtonBorderStyle.Solid); 
} 

Taken de here par Andrej Tozon

8

J'ai également rencontré ce problème et j'ai fini par utiliser une solution de contournement.

Créez un contrôle personnalisé composé d'une étiquette entourée d'un panneau.

Vous pouvez ensuite utiliser le panneau pour créer votre bordure et changer sa couleur pour ce que vous voulez.

J'ai trouvé que c'est une bonne idée (bien que prenant un peu de temps) d'envelopper tous les contrôles dans votre application de toute façon, parce que quand il s'agit de savoir que vous avez besoin d'une propriété personnalisée, ce type, vous pouvez simplement changer le contrôle de base et l'ensemble de votre application change.

12

I combiné les solutions de robin.ellis et orandov pour obtenir un résultat qui fonctionne le mieux pour moi. J'ai créé un contrôle personnalisé qui a hérité de l'objet Label, puis remplacé l'événement OnPaint.

Public Class nomLabel 
    Inherits Label 

    Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs) 
     MyBase.OnPaint(e) 

     ControlPaint.DrawBorder(e.Graphics, e.ClipRectangle, myColor, ButtonBorderStyle.Solid) 
    End Sub 

End Class 

Merci pour l'aide!

+0

comment utiliser ceci? 'myLabel.BorderStyle = nomLabel'? – AdorableVB

+0

@AdorableVB, nomLabel est un contrôle personnalisé, pas un style de bordure. Vous utiliseriez nomLabel au lieu du contrôle Label standard. – Stewbob

+0

yup, compris. créé la mienne hier, mais, la frontière est fixe. Je veux que ButtonBorderStyle.Solid quand la souris a plané et '.None' quand la souris partent. le code ne fonctionne pas, et si j'utilise un contrôle personnalisé, il n'applique pas non plus le code. – AdorableVB

Questions connexes