使用GetPreferredSize()时如何计算大小?

时间:2019-04-01 06:03:15

标签: c# winforms resize label

我正在使用标签显示消息。我已经使用GetPreferredSize()方法计算了标签的大小。当我在调整标签大小时未进行任何操作时,此方法效果很好。但是,当我减小标签的宽度时,文本将被剪切。但是,如果我在要显示的文本的末尾包含换行符(\n),则在下一行中将显示在前一种情况下被剪切的文本。

这是我尝试过的。

label1.Text = "Are you sure you wish to cancel? \n You will permanently discard any information you have entered!";
label1.Font = new Font(new FontFamily("Calibri"), 15); 
Size textSize = label1.GetPreferredSize(Size.Empty); //Works fine.
label1.Size = textSize;


textSize.Width -= 25;
label1.Size = textSize;// Text is clipped.

label1.Text = "Are you sure you wish to cancel? \n You will permanently discard any information you have entered! \n "; //Works fine again!

请参阅图片, Label Text

如果该方法根据内容计算标签的大小,为什么内容在case2中被裁剪而在case3中工作良好?宽度和高度如何关联?谁能解释我所缺少的吗?

谢谢

信德省

3 个答案:

答案 0 :(得分:0)

将文本大小减小25之前有多大?可能只是空间不足而已中断-请尝试使用其他数字。而且……您当然想减去而不分配?

答案 1 :(得分:0)

修改“锚点”设置,使其仅锚定在左侧或右侧

答案 2 :(得分:0)

 Size sz = new Size(this.Width, Int32.MaxValue);
            sz = TextRenderer.MeasureText(this.Text, this.Font, sz, TextFormatFlags.WordBreak);
            this.Height = sz.Height;

其中“ this”是您的控件。