控制自定义控件的渲染
问题描述:
我希望细节视图中的所有标签都是粗体。我创建了一个简单的自定义标签控件,强制字体变粗。这对我来说有代码味道的感觉。我并不关心开发人员能够自定义自定义控件(baseDetailLabel)。我只是想强制一个应用程序广泛的标准细节标签(他们必须是粗体)。在控件初始化时强制字体样式还是应该用另一种方法做这件事?我确实希望设计师可以看到这种风格。控制自定义控件的渲染
public class BaseDetailLabel : System.Windows.Forms.Label
{
public BaseDetailLabel()
{
System.Drawing.Font f = new Font(this.Font,FontStyle.Bold);
this.Font = f;
}
}
答
从描述我认为你也有标签,你不想大胆。在这种情况下,单独的控制类似乎是最好的方式。
简单的构造函数方法不会阻止覆盖,只是设置一个初始值。我认为那就是你想要的。要强制加粗,您必须重写OnPaint方法。
关于气味:它不是幻想,但与领土。在没有好的(更好的)攻击方式的情况下,你正在执行一个样式规则。除非你想建立一个完整的Style系统。
答
这应该没问题。不过,我可能会提醒你,你可能需要在某处放置字体。字体是需要处理的图形对象 - 而且我不确定是否销毁标签会自动为您做。
使用using语句更新它。 – 2009-05-24 23:28:52