gpt4 book ai didi

C# UserControl 覆盖字体

转载 作者:行者123 更新时间:2023-11-30 20:34:36 24 4
gpt4 key购买 nike

我目前正尝试在 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; }
}

但是当我编译项目源代码并将新的 UserControl 添加到窗体时,Visual Studio 崩溃并重新启动。我做错了什么?

最佳答案

首先我想说对不起,我自己发现问题后自己回答了自己的问题。但我认为这个问题不会罕见,所以这里是答案:

首先,当您创建自己的自定义 UserControl 时,请记住首先创建您正在使用的 UserControl,然后创建 UserControl 中的控件。在 UserControl 中实现 Font 属性时,将执行 get-Accessor 而 InitializeComponent() 仍未执行,当 Font 属性以我的方式引用另一个 Font 属性时,这将导致 VS 崩溃。代码应该是这样的:

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;
}
}

关于C# UserControl 覆盖字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38996043/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com