2015-09-24 26 views
0

我指的是Visual Studio设计视图。使用完整的.NET框架添加标签时,System.Windows.Forms.Label控件默认情况下将AutoSize属性设置为True。如果我将一个Label控件拖放到窗体上,则默认字体为“Microsoft Sans Serif,12pt,Regular”,控件的高度为20.将字体更改为(比如说)“Tahoma,14pt,Bold”和高度改为23.好。标签的设计时间大小(精简框架)

但是在CF(Compact-Framework)中,Label控件没有AutoSize属性。当我如上所述更改字体时,Label的高度不会改变(保持在20),并且一些文本被切掉)。

我的问题是:打开一个完整的.NET项目和测试我的字体选择的短缺,有没有办法知道在设计时什么高度来设置我的Label

回答

2

可以在Paint事件或OnPaint方法使用图形对象来测量字符串的高度,例如:

Graphics g = e.Graphics; 
float lineHeight = g.MeasureString(this.Text, this.Font).Height; 

它可以在遗传标记物来使用。例如,您可以覆盖OnPaint方法或其他位置并执行此操作,然后它将在设计时运行。

更多资源:

+0

这是伟大的(和我已经使用的东西),但这是一个运行时检查。我的问题是关于标签的设计时间大小(即Visual Studio设计器中控件的属性)。 – AlainD

+0

@AlainD我认为它可以用于继承标签。例如,您可以重写'OnPaint'方法并执行此操作。那么它将在设计时运行。 –

+1

@AlainD Aslo你可以看看[多线Graphics.MeasureString on .Net CF](http://www.mobilepractices.com/2007/12/multi-line-graphicsmeasurestring.html) –