自定义用户控件中覆盖的字体属性在设计器文件中未显示

3
我有一个自定义用户控件,并重写了它的Font属性。
当我将我的用户控件拖放到窗体上时,我可以很好地设置Font属性,但是我没有看到我为'Font'设置的值出现在我的窗体设计文件中。当我编译/运行我的应用程序时,我输入的值会丢失。
请注意,我还想覆盖Text属性,但在设计器文件中也看不到设置的值,直到我在这里找到了一个答案来帮助做到这一点(我需要设置'DesignerSerializationVisibility'和'EditorBrowsable'属性)。我尝试过对Font进行相同的操作,但无济于事。有什么建议吗?
    private Font _Font = UserControl.DefaultFont;

    [Description("Sets the font of the button caption"),,
     Browsable(true),
     Bindable(true),
     EditorBrowsable(EditorBrowsableState.Always),
     DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
    public override Font Font
    {
        get { return _Font; }
        set
        {
            _Font = value;
        }

    }

你不能只使用 base.Font 吗?拥有两个实例的意义是什么? - Patrick
在文档中注意到了这个: "继承者须知:在派生类中重写 Font 属性时,请使用基类的 Font 属性来扩展基实现。否则,您必须提供所有实现。您不需要同时重写 Font 属性的 get 和 set 访问器;如果需要,只需重写其中一个。" - Patrick
1个回答

3
将您的代码更改为以下内容:
public UserControl1()
{
  InitializeComponent();
  base.AutoScaleMode = AutoScaleMode.None;
}

[Description("Sets the font of the button caption")]
public override Font Font
{
  get { return _Font; }
  set { _Font = base.Font = value; }
}

这确实将值传递到设计文件中,但设置基本字体属性会使用户控件上的所有子控件的大小失调。例如,如果我增加字体大小,那么我在用户控件上拥有的按钮也会变大。 - Mike R.
@Mike R. 更新的答案:将AutoScaleMode = Font(默认值)更改为None。 - LarsTech

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接