public class MyLable : Label
{
private TextFormatFlags textOutputFormat = TextFormatFlags.WordEllipsis;
//标题输出方式
[Browsable(false)]
[Localizable(false)]
[DefaultValue(TextFormatFlags.WordEllipsis)]
public TextFormatFlags TextOutputFormats
{
set
{
this.textOutputFormat = value;
}
get
{
return this.textOutputFormat;
}
}
public MyLable()
{
this.Paint += new System.Windows.Forms.PaintEventHandler(PaintEvent);
}
//自绘 显示提示信息
private void PaintEvent(object sender, PaintEventArgs e)
{
Label label = ((Label)sender);
Graphics g = e.Graphics;
SolidBrush blueBrush = new SolidBrush(label.BackColor);
Rectangle rc = new Rectangle(0, 0, label.Width, label.Height);
g.FillRectangle(blueBrush, rc);
System.Windows.Forms.TextRenderer.DrawText(
g, label.Text, label.Font, rc, label.ForeColor,
this.TextOutputFormats | MyLable.ContentAlignmentToTextFormatFlags(label.TextAlign));
}
//从未使用MyLable ContentAlignmentToTextFormatFlags:Void 的“this”参数。根据需要,将成员标记为 static
static private TextFormatFlags ContentAlignmentToTextFormatFlags(ContentAlignment contentAlignment)
{
TextFormatFlags textFormatFlags = TextFormatFlags.Bottom;
switch (contentAlignment)
{
case ContentAlignment.BottomCenter:
//上,左右居中
textFormatFlags = TextFormatFlags.Bottom | TextFormatFlags.HorizontalCenter;
break;
case ContentAlignment.BottomLeft:
textFormatFlags = TextFormatFlags.Bottom | TextFormatFlags.Left;
break;
case ContentAlignment.BottomRight:
textFormatFlags = TextFormatFlags.Bottom | TextFormatFlags.Right;
break;
case ContentAlignment.MiddleCenter:
textFormatFlags = TextFormatFlags.VerticalCenter | TextFormatFlags.HorizontalCenter;
break;
case ContentAlignment.MiddleLeft:
textFormatFlags = TextFormatFlags.VerticalCenter | TextFormatFlags.Left;
break;
case ContentAlignment.MiddleRight:
textFormatFlags = TextFormatFlags.VerticalCenter | TextFormatFlags.Right;
break;
case ContentAlignment.TopCenter:
textFormatFlags = TextFormatFlags.Top | TextFormatFlags.HorizontalCenter;
break;
case ContentAlignment.TopLeft:
textFormatFlags = TextFormatFlags.Top | TextFormatFlags.Left;
break;
case ContentAlignment.TopRight:
textFormatFlags = TextFormatFlags.Top | TextFormatFlags.Right;
break;
default:
break;
}
return textFormatFlags;
}
}