表单上无法识别子类文本框只读字体

发布于 2024-07-15 19:55:28 字数 358 浏览 2 评论 0原文

为用户界面控件构建我的基类已经完成了。 我有使用自定义字体分配派生的命令按钮并将其放在表单上,​​一切都很好...但是,在同一表单上无法正确识别文本框的只读属性字体的相同代码。 它仅采用表格的设置,而忽略其自己的字体声明。

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

Building my baseclasses for user interface controls is getting there. I have command buttons derived with custom font assignment and put on a form, all is fine... However, identical code for the read-only property Font of a textbox is NOT recognized properly on the same form. It is ONLY taking the setting of the FORM and disregarding its own Font declaration.

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

微凉 2024-07-22 19:55:28

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; }
    }
}

The Font property is an ambient property. If it was never assigned, it automatically matches the Font property of the container control. You never assigned it.

Do it like this:

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; }
    }
}
-黛色若梦 2024-07-22 19:55:28

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

我的 getter

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;
   }
}

With a help from "nobugz" (Thanks), I found this same failure when doing a ComboBox too. My result was the following...

My getter

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

However, in nobugz response, something wasn't working quite right with the compiler, so in the constructor of the class

clas MyTextbox...
{
   public MyTextbox()
   {
      // it defaults itself from its own read-only font "new" object instance and works
      base.Font = Font;
   }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文