使用 GetPreferredSize() 时如何计算大小?
How does the size get calculated when using 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!
参考图片,
Label Text
如果该方法根据内容计算标签的大小,为什么内容在case2中被裁剪而在case3中效果很好?宽度和高度有什么关系?谁能解释一下我错过了什么?
谢谢,
辛杜
减少 25 之前的文字大小是多少?可能只是 space 不够用而被切断 - 尝试使用不同的数字。而且......你当然想减去而不是赋值?
修改 "Anchor" 设置以仅锚定在左侧或右侧
Size sz = new Size(this.Width, Int32.MaxValue);
sz = TextRenderer.MeasureText(this.Text, this.Font, sz, TextFormatFlags.WordBreak);
this.Height = sz.Height;
其中 "this " 是您的控件。
我正在使用标签来显示消息。我使用 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中效果很好?宽度和高度有什么关系?谁能解释一下我错过了什么?
谢谢,
辛杜
减少 25 之前的文字大小是多少?可能只是 space 不够用而被切断 - 尝试使用不同的数字。而且......你当然想减去而不是赋值?
修改 "Anchor" 设置以仅锚定在左侧或右侧
Size sz = new Size(this.Width, Int32.MaxValue);
sz = TextRenderer.MeasureText(this.Text, this.Font, sz, TextFormatFlags.WordBreak);
this.Height = sz.Height;
其中 "this " 是您的控件。