如何为 Font 属性设置 DefaultValue






2.89/5 (18投票s)
如何设置字体属性的默认值。
引言
本文介绍了在Visual Studio .NET 2003中解决一个非常常见的问题! 您知道我们可以使用DefaultValue
属性为某些属性设置默认值,例如下面的命令
[System.ComponentModel.DefaultValue(...)]
但是,如果您想以这种方式为Font
属性设置默认值,您会看到非常异常的行为,并且它不起作用! 这是因为Font
属性不是一个简单的属性。 我花了一些时间来解决这个问题,最终,我找到了解决方案...
场景:假设您想创建一个从Microsoft Button
继承的按钮,并且您想将Font
属性的默认值设置为Tahoma,大小为8磅。
解决方案:下面的示例将告诉您如何操作
public class Button : System.Windows.Forms.Button
{
private static System.Drawing.Font _defaultFont =
new System.Drawing.Font("Tahoma",
8.25f, System.Drawing.FontStyle.Regular,
System.Drawing.GraphicsUnit.Point,
178,
false);
public override System.Drawing.Font Font
{
get
{
return(base.Font);
}
set
{
if(value == null)
base.Font = _defaultFont;
else
{
if(value == System.Windows.Forms.Control.DefaultFont)
base.Font = _defaultFont;
else
base.Font = value;
}
}
}
public override void ResetFont()
{
Font = null;
}
private bool ShouldSerializeFont()
{
return(!Font.Equals(_defaultFont));
}
public Button()
{
Font = _defaultFont;
}
}
如上面的代码所示,我没有为Font
属性编写任何属性,而是使用了两个名为ResetFont()
和ShouldSerializeFont()
的方法。 您应该知道,对于.NET中的每个属性,我们都有这两种方法
ResetSomeProperty()
ShouldSerializeSomeProperty()