在 Visual Studio 2008 中,当我添加一些控件以形成设计器时,设计器会自动创建一些关于控件属性的代码。现在,我正在使用自己的用户控件并将它们添加到表单中,设计器再次自动创建代码行,在这种情况下,属性 FONT 是我不希望设计器添加它的属性之一,因为它覆盖上层的字体设置。任何人都知道如何设置要在设计器中设置的属性?
问问题
606 次
1 回答
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 属性在构造时具有该值。
于 2012-06-12T18:01:11.190 回答