Subclassed Textbox只读字体在表单上无法识别

时间:2009-03-24 02:31:29

标签: c# winforms fonts class

为用户界面控件构建我的基类正在实现。我有自定义字体赋值派生的命令按钮并放在表单上,​​一切都很好......但是,在同一表单上无法正确识别文本框的只读属性Font的相同代码。它只需要设置FORM并忽略它自己的Font声明。

public class MyTextbox : TextBox
{
    [ReadOnly(true)]
    public override Font Font
    { get { return new 
             Font( "Courier New", 12f, FontStyle.Regular, GraphicsUnit.Point ); 
          } 
    }
}

2 个答案:

答案 0 :(得分:1)

Font属性是一个环境属性。如果它从未分配,它会自动匹配容器控件的Font属性。你从未分配过它。

这样做:

public class MyTextbox : TextBox {
    Font mFont;
    public MyTextbox() {
        base.Font = mFont = new Font("Courier New", 12f, FontStyle.Regular, GraphicsUnit.Point);
    }

    [ReadOnly(true)]
    public override Font Font {
        get { return mFont; }
    }
}

答案 1 :(得分:0)

在“nobugz”(谢谢)的帮助下,我在使用ComboBox时也发现了同样的失败。我的结果如下......

我的吸气器

get { return new Font( ... ); }

然而,在nobugz响应中,某些东西在编译器上运行不正常,所以在类的构造函数中

clas MyTextbox...
{
   public MyTextbox()
   {
      // it defaults itself from its own read-only font "new" object instance and works
      base.Font = Font;
   }
}