2009-05-28 45 views

回答

4

看一看 - 只给你一个想法:

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提供的代码! ;-) – Cerebrus 2009-05-28 16:45:13

1

我想你必须派生出你自己的“无文本复选框”,才能正确识别控件的边界。

听起来可能听起来很复杂,但应该不会太困难,我想。当我学习.NET 1.x时,我创建了一些奇特的复选框,但我不记得关注焦点矩形。