如下面的程序,可以实现自定义一个控件,封装了Label控件,如果程序中的所有控件都使用该控件,某一天领导希望所有控件的字体要改大一些,则理论上能只改这个控件就行,但到底怎么做呢?我写了override Font,但是没有效果,请问到底该怎么做呢?非常感谢!
public partial class DLLabel : Label
    {
        public DLLabel()
        {
            InitializeComponent();
        }        public override Font Font
        {
            get
            {
                System.Drawing.Font o = new Font();
                o = base.Font;
                o.Size = 24;
                return o;
            }
            set
            {
                base.Font = value;
            }
        }
    }

解决方案 »

  1.   

    在你的控件的构造函数中设置字体大小
    然后在你的自定义控件中追加一个字体大小变化的change事件,当有改变的时候,自动调这个事件,把字体改为你默认的
      

  2.   

    不需要重写FONT属性,只需要在构造函数里添加即可。详细如下:public DLLabel()
            {
                //InitializeComponent();            SetFont();
            }        private void SetFont()
            {
                Font myBigFont = new Font("Arial", 20);
                this.Font = myBigFont;
            }
      

  3.   

    感谢大侠们的帮助,上面的方法我都试过,有点小问题:
    如果在构造函数中SetFont,则已经加载过的控件的字体没有被改变,这当然不能满足我的要求。
    但如果重载Font属性,则这个DLLabel控件的字体就固定了,没办法再修改了。这样程序中某个控件要求字体例外时,就没办法了。大侠们能解决吗?非常感谢!
      

  4.   

    to:如果在构造函数中SetFont,则已经加载过的控件的字体没有被改变不会啊,所有的控件的字体都是SetFont中的为准~~`,例外的控件可以直接设置Fondt就可以了。