用户定义未设置为继承标签控件

时间:2014-07-08 13:45:23

标签: c# inheritance

我在c#.net中创建了一个名为MyLabel的类,它具有基本Label(Windows Label控件类)类。我添加了一个用户定义的属性,即

Format { get; set; }

当我放置MyLabel的物体时,在胜利表格上;我在PropertyGrid控件中获取Format属性,我可以更改它但是在执行时我没有得到设置值infact得到默认值。

1 个答案:

答案 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);
}