用户定义未设置为“继承”标签控件
本文关键字:继承 标签 控件 定义 设置 用户 | 更新日期: 2023-09-27 18:12:02
我在c#.net中创建了一个名为MyLabel的类,它具有基本的Label(Windows Label控件类)类。我添加了一个用户定义的属性,即
Format { get; set; }
当我把MyLabel的对象;我在PropertyGrid控件中获得格式属性,我可以更改它,但在执行时,我没有获得设置值,事实上总是获得默认值。
看起来你想用一个属性来格式化Label的文本。
好吧,你需要做更多的事情;单靠文字格式是不够的。
这里有一种方法:它涉及到自己画标签,这是有指导意义的,但也有很多工作…
public partial class MyLabel : Label
{
public MyLabel ()
{
//..
Paint += MyLabel _Paint;
Format = "{0}";
}
public string Format { get; set; }
void MyLabel _Paint(object sender, PaintEventArgs e)
{
using (SolidBrush fBrush = new SolidBrush(this.ForeColor) )
using (SolidBrush bBrush = new SolidBrush(this.BackColor) )
{
if (Format == "") Format = "{0}";
e.Graphics.FillRectangle(bBrush, this.ClientRectangle);
string fs = string.Format(Format, Text);
e.Graphics.DrawString(fs, this.Font, fBrush, new Point(Margin.Left, Margin.Top));
}
}
}
注意,这实际上只是一个相当简单的实现。根据你想要的标签行为的兼容性,你可能还想实现标签的TextAlign, AutoSize和许多其他属性的功能。
也许你宁愿创建一个文本分配函数来分配已经格式化的文本?
public void SetText(string text)
{
if (Format == "") Format = "{0}";
Text = string.Format(Format, text);
}