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

本文关键字:继承 标签 控件 定义 设置 用户 | 更新日期: 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);
}