猿问

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

我正在使用标签来显示消息。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!


参考图片, 标签文字


如果该方法根据内容计算标签的大小,为什么内容在 case2 中被裁剪而在 case3 中效果很好?宽度和高度有什么关系?谁能解释我错过了什么?


谢谢,


紫衣仙女
浏览 151回答 3
3回答

慕侠2389804

 Size sz = new Size(this.Width, Int32.MaxValue);            sz = TextRenderer.MeasureText(this.Text, this.Font, sz, TextFormatFlags.WordBreak);            this.Height = sz.Height;“这个”是你的控制权。

慕容3067478

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

眼眸繁星

在减少 25 之前文本大小有多大?也许只是空间不够,被切断了——尝试使用不同的数字。而且......你当然想减去而不是分配?
随时随地看视频慕课网APP
我要回答