给大家一个WinForm中画横向分隔线的控件源代码。好多人在用。

大家在窗体中使用横向分隔线,好多人都用 GroupBox或者Label来模拟。这样有好处也有坏处。好处是简单,坏处是如果很多条线的话,控制大小很难。

 

using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;

public class HorizontalLine : Control
{
    
private Color _lineColor;

    [Category(
"布局"), Description("控件的大小(以像素为单位)。")]
    
public new Size Size
    {
        
get
        {
            
return base.Size;
        }
        
set
        {
            
// 注意这里,这个控件高度已经在代码中被定死,无论怎么修改都是3像素,如果嫌小,可以手工修改下面的代码。
            SetBounds(Location.X, Location.Y, value.Width, 3, BoundsSpecified.Size);
        }
    }

    
public new Color BackColor
    {
        
get { return base.BackColor; }
        
set
        {
            
base.BackColor = Color.Transparent;
        }
    }

    
protected override void OnPaint(PaintEventArgs e)
    {
        
base.OnPaint(e);
        Graphics g 
= e.Graphics;
        Rectangle r 
= e.ClipRectangle;
        Point left 
= new Point(r.Location.X, r.Location.Y + 1);
        Point right 
= new Point(r.Location.X + r.Width, r.Location.Y + 1);
        
// 下面的代码就是 #cccccc 颜色代码,深灰色,有要修改的人可以手工改,或者扩展下,变成属性直接可以定义。
        _lineColor = Color.FromArgb(204204204);
        Pen pen 
= new Pen(new SolidBrush(_lineColor), 1.5f);
        g.DrawLine(pen, left, right);
        pen.Dispose();
    }
}

 

posted on 2011-03-11 16:14  笑望人生  阅读(3308)  评论(2编辑  收藏  举报

导航