0

我有一个创建用户控件的应用程序,为此我定义了一个类来重用一些看起来像这样的字体:

public sealed class MyFonts
{       
    private static Font Tahoma7Regular = new Font("Tahoma", 7, FontStyle.Regular);
    private static Font Tahoma9Regular = new Font("Tahoma", 9, FontStyle.Regular);
    private static Font Tahoma9Bold = new Font("Tahoma", 9, FontStyle.Bold);       

    public static Font ChannelText = new Font("Tahoma", 12, FontStyle.Bold);       
    public static Font ClockText = Tahoma7Regular;
    public static Font HelpText = Tahoma9Regular;       
    public static Font RollFieldText = Tahoma9Bold;      

}

有什么方法可以改进它,我Brushes在反编译器工具中看到了类,他们使用了ThreadData我不知道的东西,但为了简单起见,我也可以改进这段代码吗?

4

3 回答 3

0

如果您正在构建用户控件,则不应使用静态字段。用户控件的主要目标是可重用,因此您不希望对字体等属性使用固定值;这些属性将由 usercontrol 父级设置。

所以你可能想要写的是属性(使用属性比如Description也很有用):

[Category("Appearance"), Description("Gets or sets the text channel font.")]
[Browsable(true)]
public Font ChannelFont { get; set; }

[Category("Appearance"), Description("Gets or sets the text clock font.")]
[Browsable(true)]
public Font ClockFont { get; set; }
...
于 2012-08-07T09:00:59.623 回答
0

在创建这么多对象之前,先分析一下你是否真的需要它?大多数控件都有一个 Font 属性(具有默认值)。您只需要在那里设置值而不是创建新对象。

于 2012-08-07T08:41:36.423 回答
0

ThreadData 听起来像是某种形式的在线程之间共享数据的机制。

看一下 Brushes 类:

public static Brush MediumAquamarine { get; }

也许稍微调整一下你的班级,让它变得更像上面那样。在我看来,看起来更干净。

于 2012-08-07T08:41:45.043 回答