我在c#.net中创建了一个名为MyLabel的类,它具有基本Label(Windows Label控件类)类。我添加了一个用户定义的属性,即
Format { get; set; }
当我放置MyLabel的物体时,在胜利表格上;我在PropertyGrid控件中获取Format属性,我可以更改它但是在执行时我没有得到设置值infact得到默认值。
答案 0 :(得分:0)
您希望通过属性格式化Label的文本。
嗯,你需要多做一点;单词 Format 本身不会......
这是一种方式:它涉及自己做标签的绘画,这是有益的,但也有很多工作..
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));
}
}
}
请注意,这实际上只是一个相当简单的实现。根据您希望Label的行为兼容性,您可能还希望实现TextAlign,AutoSize和Label的许多其他属性的功能。
也许您更愿意创建一个文本分配函数来分配已经格式化的文本?
public void SetText(string text)
{
if (Format == "") Format = "{0}";
Text = string.Format(Format, text);
}