我有Panel
我正在以编程方式创建;另外我要添加几个组件。
其中一个组件是Label
,其中包含用户生成的内容。
我不知道标签应该有多高,但它确实有一个固定的宽度。
如何设置高度以便显示所有文本而不更改宽度?
答案 0 :(得分:68)
只需使用AutoSize
属性,将其重新设置为True
。
将MaximumSize
属性设置为,例如(60, 0)
,使其不能水平增长,只能垂直增长。
答案 1 :(得分:5)
public SizeF MeasureString(
string text,
Font font,
int width
)
width参数指定 宽度分量的最大值 返回的SizeF结构 (宽度)。如果width参数是 小于实际的宽度 string,返回的Width组件 被截断为表示的值 最大字符数 将适合指定的宽度。 为了容纳整个字符串, 返回高度组件已调整 到允许显示的值 带字符包的字符串。
换句话说,此函数可以根据字符串的宽度计算字符串的高度。
答案 2 :(得分:0)
如果您有标签并且想要控制垂直配合,则可以执行以下操作:
MyLabel.MaximumSize = new Size(MyLabel.Width, 0)
MyLabel.Height = MyLabel.PreferredHeight
MyLabel.MaximumSize = new Size(0, 0)
例如,如果容器中有可以调整大小的标签,则此选项非常有用。在这种情况下,您可以设置Anchor
属性,以便标签水平调整大小而不是垂直调整大小,并且在resize事件中,您可以使用上述方法调整高度。
要避免将垂直拟合解释为新的resize事件,可以使用布尔值:
bool _inVerticalFit = false;
在resize事件中:
if (_inVerticalFit) return;
_inVerticalFit = true;
MyLabel.MaximumSize = new Size(MyLabel.Width, 0)
MyLabel.Height = MyLabel.PreferredHeight
MyLabel.MaximumSize = new Size(0, 0)
_inVerticalFit = false;
答案 3 :(得分:0)
仅自动调整高度:
label.AutoSize = true;
label.AutoSize = false;
label.Width = width;