2009-05-28 6 views
1

Normalement, lorsque vous effectuez un tabulation sur les contrôles d'un formulaire, lorsque le focus est défini sur un contrôle CheckBox, le texte est souligné pour afficher le focus.Comment puis-je forcer le contour de mise au point à dessiner autour de la case à cocher au lieu du texte sur un contrôle checkbox?

J'utilise un CheckBox sans le texte (de sorte que seule la boîte est affichée). Comment puis-je forcer le contour de mise au point à dessiner autour de la boîte au lieu du texte?

Répondre

4

Jetez un oeil - juste pour vous donner une idée:

public class MyCheckBox : CheckBox 
{ 
    public MyCheckBox() 
    { 
    // AutoSize is virtual - so you should not call it here, just demo 
    AutoSize = false; 
    // You need padding to make the base.OnPaint() method leaving you some space 
    Padding = new Padding(2, 2, 0, 0); 
    Size = new Size(17, 16); 
    } 

    protected override void OnPaint(PaintEventArgs pevent) 
    { 
    base.OnPaint(pevent); 
    if(!Focused) 
    { 
     return; 
    } 
    using(var pen = new Pen(Color.Black)) 
    { 
     pen.DashStyle = DashStyle.Dot; 
     pevent.Graphics.DrawRectangle(pen, new Rectangle(0, 0, 16, 15)); 
    } 
    } 
} 
+0

+1 pour fournir le code! ;-) – Cerebrus

1

Je pense que vous devrez dériver votre propre "case à cocher sans texte" pour que les limites du contrôle soient correctement reconnues.

Cela peut sembler compliqué mais ne devrait pas être trop difficile, je pense. J'ai créé quelques cases à cocher fantaisie quand j'apprenais .NET 1.x, bien que je ne me rappelle pas être préoccupé par le rectangle de foyer.

Questions connexes