【发布时间】:2013-07-24 08:54:32
【问题描述】:
我正在使用标签向用户显示进度。这会发生很多次,并且部分用户定义的文本每次都会更改。
问题:我应该知道绘制的文本是否大于标签的大小。
我试过这种方法:
using (Graphics g = lbl.CreateGraphics()) {
SizeF size = g.MeasureString(lbl.Text, lbl.Font);
// Change size of label if too small
}
但它太慢了,每次更新调用时都会占用大量资源。
那么有没有办法找出绘制的文本何时大于Label?
编辑:
正如 Hans Passant 所说,AutoSize 会做到的。
抱歉,我没有说 Label 下面的其他控件必须移动。
【问题讨论】:
-
您正在尝试调整标签大小? stackoverflow.com/questions/9527721/…
-
@butterbox:谢谢,但您的链接问题是关于调整字体大小。我想调整标签的大小。
-
它已经知道如何做到这一点,请将其 AutoSize 属性设置为 True。如果那是“慢”,那么你做错了,这只需要对人眼来说足够快。比 MeasureString() 慢 方式。只需限制您的更新速度。
-
@HansPassant:请看我的编辑...
-
然后您应该将表单布局为将所有内容放在
TableLayoutPanel或类似名称中。这将负责随着相对大小的变化重新调整位置。