Tem*_*.Me 4 c# fonts user-controls
我目前正在尝试在 C# 中的 Visual Studio 中覆盖自定义 UserControl 的字体属性。该属性应仅采用用户控件中标签的字体,而忽略 UserControl 的字体属性。
代码:
[Bindable(true)]
[Browsable(true)]
[Category("Appearance")]
[Description("The font of the text in the control")]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
[EditorBrowsable(EditorBrowsableState.Always)]
public override Font Font
{
get { return label1.Font; }
set { label1.Font = value; }
}
Run Code Online (Sandbox Code Playgroud)
但是当我编译项目源代码并将新的 UserControl 添加到表单时,Visual Studio 崩溃并重新启动。我究竟做错了什么?
一开始我想说对不起,我在发现自己出了什么问题后自己回答了自己的问题。但我认为这个问题并不罕见,所以答案如下:
首先,当您创建自己定制的 UserControl 时,请记住首先创建您正在使用的 UserControl,然后创建 UserControl 中的控件。在 UserControl 中实现 Font 属性时,get-Accessor 将执行,而 InitializeComponent() 仍未执行,这将导致 VS 崩溃,当 Font 属性以我的方式引用另一个 Font 属性时。代码应该是这样的:
private Font m_Font = DefaultFont;
[Bindable(true)]
[Browsable(true)]
[Category("Appearance")]
[Description("The font of the text in the control")]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
[EditorBrowsable(EditorBrowsableState.Always)]
public override Font Font
{
get { return m_Font; }
set
{
m_Font = value;
label1.Font = m_Font;
}
}
Run Code Online (Sandbox Code Playgroud)