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

问题描述 投票:0回答:3

我正在使用标签来显示消息。我使用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中运行良好?宽度和高度如何相关?谁能解释我错过的东西?

谢谢,

娜斯迪胡

c# winforms resize label
3个回答
0
投票
 Size sz = new Size(this.Width, Int32.MaxValue);
            sz = TextRenderer.MeasureText(this.Text, this.Font, sz, TextFormatFlags.WordBreak);
            this.Height = sz.Height;

“这个”是你的控制。


0
投票

文字大小减少25之前有多大?也许它只是没有足够的空间和切断 - 尝试使用不同的数字。而且......你当然想减去而不是分配?


0
投票

将“锚点”设置修改为仅锚定到左侧或右侧

© www.soinside.com 2019 - 2024. All rights reserved.