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

Winforms 如何阻止Visual Studio为designer中的控件生成属性设置?,winforms,code-generation,windows-forms-designer,automatic-properties,Winforms,Code Generation,Windows Forms Designer,Automatic Properties,在VisualStudio2008中,当我添加一些控件以形成表单时,设计器会自动创建一些关于控件属性的代码。现在,我正在使用自己的用户控件,通过将它们添加到表单中,设计器再次自动创建代码行,在这种情况下,属性字体是我不希望设计器添加的字体之一,因为它会覆盖上层的字体设置。有人知道如何在designer中设置要设置的属性吗?如果designer确定属性的值与DefaultValue[属性]不同,则只会添加一行代码来更改属性的值 如果自定义控件希望更改字体属性(或任何其他基类属性)的默认值,则必须执

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

如果designer确定属性的值与DefaultValue[属性]不同,则只会添加一行代码来更改属性的值

如果自定义控件希望更改字体属性(或任何其他基类属性)的默认值,则必须执行一些向导:

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; }
    }
}
注意字体属性上的“new”关键字吗?字体不是虚拟的,所以你不能覆盖它,我们不想这样做。您可以重写以更改行为。我们不想改变行为(这就是为什么代码只是重定向回基),我们只想公开一个新的DefaultValue。这会诱使设计器考虑控件的新默认值

我们还确保字体属性在构造时具有该值