我希望详细视图中的所有标签都是粗体。我创建了一个简单的自定义标签控件,强制字体为粗体。这给我带来了代码味道的感觉。我并不关心开发人员能够自定义自定义控件(baseDetailLabel)。我只想强制执行详细标签的应用程序范围标准(它们必须是粗体)。在初始化控件时强制使用字体样式还是应该在另一种方法中执行此操作?我确实希望设计师可以看到这种风格。
public class BaseDetailLabel : System.Windows.Forms.Label
{
public BaseDetailLabel()
{
System.Drawing.Font f = new Font(this.Font,FontStyle.Bold);
this.Font = f;
}
}
答案 0 :(得分:2)
从描述中我认为你也有标签,你不想大胆。在这种情况下,单独的Control类似乎是最好的方法。
简单的构造方法不会阻止覆盖,只需设置初始值。我想这就是你想要的。要强制粗体,您必须覆盖OnPaint方法。
关于气味:它不是花哨但是随着领土而来。您正在执行一种没有良好(更好)攻击方式的样式规则。除非你想构建一个完整的Style系统。
答案 1 :(得分:2)
这应该没问题。但是,我可能会提醒您,您可能需要在某处处理该字体。字体是需要处理的图形对象 - 我不确定标签的销毁是否会自动为您执行。