C# 在构造函数中存储按钮的字体
我有一个来自System.Windows.Forms.button的自定义按钮:C# 在构造函数中存储按钮的字体,c#,visual-studio,C#,Visual Studio,我有一个来自System.Windows.Forms.button的自定义按钮: (class MyButton : Button) 此按钮有一个名为IsSelected的额外属性 public bool IsSelected { get { return _isSelected; } set { _isSelected = value;
(class MyButton : Button)
此按钮有一个名为IsSelected的额外属性
public bool IsSelected
{
get
{
return _isSelected;
}
set
{
_isSelected = value;
if (value)
this.Font = new Font(_storedFont.FontFamily, _storedFont.Size - 1); //Decrease font size by 1
else
this.Font = _storedFont; //Set font back to origin
}
}
如果IsSelected设置为true,则按钮的字体大小将减小1点,以向应用程序的用户显示此按钮处于“按下”状态。
如果IsSelected设置为false,则按钮的字体大小将设置回原始大小,以向用户显示此按钮现在再次处于“正常”状态
现在的问题是,我首先需要存储在VisualStudio属性窗口中设置的原始字体大小,然后再由IsSelected更改
public bool IsSelected
{
get
{
return _isSelected;
}
set
{
_isSelected = value;
if (value)
this.Font = new Font(_storedFont.FontFamily, _storedFont.Size - 1); //Decrease font size by 1
else
this.Font = _storedFont; //Set font back to origin
}
}
为了保存存储的原始字体大小,我有一个名为StoredFont的属性(类级别字段=_StoredFont)
然后,我尝试将原始字体大小存储在MyButton中的链接构造函数中,但似乎在Visual Studio实际设置属性窗口中定义的字体之前调用了该构造函数
问题1: 在VisualStudio实际设置字体之前调用构造函数是否正确 问题2: 在创建MyButton的新实例时,对如何保存从属性窗口设置的字体有何建议 注意强> 我已经考虑过许多其他显示选中状态的可能性(复选框代替按钮,其他背景色等),这不是我的问题
提前多谢 问题1:是,否则您将以NullReferenceException结束 问题2:假设第一个字体分配是您要存储的字体,您可以将该字体存储在字体替代中
public override Font Font
{
get
{
return base.Font;
}
set
{
if(_storedFont == null)
_storedFont = Font;
base.Font = value;
}
}
这样,您就不必担心初始化的顺序。只是好奇而已。您是否使用自己的/自定义按钮格式类?我刚刚创建了一个从button派生的新类,然后添加了一些额外的属性。