如何阻止Visual Studio为设计器中的控件生成属性设置?

时间:2012-06-11 16:07:17

标签: winforms code-generation windows-forms-designer automatic-properties

在Visual Studio 2008中,当我添加一些控件以形成设计器时,会自动创建一些有关控件属性的代码。现在,我正在使用自己的用户控件并将它们添加到表单中,设计器会再次自动创建代码行,在这种情况下,属性FONT是我不希望设计者添加它的其中之一,因为它覆盖上一级的字体设置。任何人都知道如何设置要在设计器中设置的属性?

1 个答案:

答案 0 :(得分:0)

如果设计者确定该值与DefaultValue [Attribute]不同,则设计者只会添加一行代码来更改属性的值。

如果您的自定义控件想要更改Font属性的默认值(或任何其他基类属性),则必须执行一些小工具:

public class MyControl : Control
{
    public MyControl()
    {
        base.Font = new Font("Arial", 9.75f);
    }

    [DefaultValue(typeof(Font), "Arial, 9.75pt")]
    public new Font Font
    {
        get { return base.Font; }
        set { base.Font = value; }
    }
}

注意Font属性上的'new'关键字?字体不是虚拟的,因此您无法覆盖它,我们不想这样做。您覆盖以更改行为。我们不想改变行为(这就是为什么代码只是重定向回基数),我们只想暴露一个新的DefaultValue。这会欺骗设计师考虑控件的新默认值。

我们还确保我们的Font属性在构造时具有该值。