我使用Visual S. 2013在C#工作,我还拥有Infragistics 2015的许可证。 在我的网格中,我有一个带有一些文本的文本标签。 我想在文本上面加一行。 像这样:
但我不知道如何继续...
非常感谢。
答案 0 :(得分:3)
只需添加一个源自Label
的新类。我认为代码是不言自明的。
class LabelWithLine : Label
{
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
e.Graphics.DrawLine(Pens.Black, 0, 0, this.Width, 0);
}
}
重建您的解决方案。现在LabelWithLine
应该出现在工具箱中,您可以将其放在表单上。
答案 1 :(得分:1)
您可以继承Label
并覆盖OnPaint
事件:
public class TopBorderLabel : Label
{
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
ControlPaint.DrawBorder(e.Graphics, ClientRectangle,
Color.White, 0, ButtonBorderStyle.None,
Color.Black, 2, ButtonBorderStyle.Solid,
Color.White, 0, ButtonBorderStyle.None,
Color.White, 0, ButtonBorderStyle.None);
}
}
这基本上用简单的英语说,"每当我们绘制(即WinForms呈现)控件(标签)时,就像你想象的那样(base.OnPaint(e)
)绘制它,但也画出它周围的边框。我们传递white, 0, None
除了顶部以外的所有边框,它将是黑色和2像素厚。
DrawBorder
方法。
答案 2 :(得分:0)
我会更加扩展它,使其看起来更专业。
public class LabelWithLine : Label
{
private Color lineColor;
private DashStyle dashStyle;
private bool isLineVisible;
/// <summary>
///set browseable and group by category in propery browser
/// </summary>
[Browsable(true)]
[Category("Line")]
public Color LineColor
{
get { return lineColor; }
set { lineColor = value; this.Invalidate(); }
}
[Browsable(true)]
[Category("Line")]
public DashStyle DashStyle { get{return dashStyle;}
set { dashStyle = value; this.Invalidate(); }
}
[Browsable(true)]
[Category("Line")]
public bool IsLineVisible { get{return isLineVisible;}
set { isLineVisible = value; this.Invalidate(); }
}
public LabelWithLine()
{
lineColor = Color.Black;
dashStyle = System.Drawing.Drawing2D.DashStyle.Dot;
isLineVisible = true;
}
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
if (isLineVisible)
{
Pen p = new Pen(LineColor);
p.DashStyle = this.DashStyle;
e.Graphics.DrawLine(p, 0, 0, this.Width, 0);
}
}
}
这是用法
labelWithLine1.LineColor = Color.Blue;
labelWithLine1.IsLineVisible = true;
labelWithLine1.DashStyle = System.Drawing.Drawing2D.DashStyle.Solid;