有没有办法在.NET标签控件中进行自动换行?
我知道有另一种方法可以使用TextBox,将属性 BorderStyle 设置为none,将属性 ReadOnly 设置为true并设置属性 WordWrap 和属性 Multiline 为true。
标签上有什么东西吗?
答案 0 :(得分:164)
更改您的最大尺寸,
label1.MaximumSize = new Size(100, 0);
并将自动调整大小设置为true。
label1.AutoSize = true;
就是这样!
答案 1 :(得分:35)
只需将Label AutoSize属性设置为False即可。然后文本将被包装,您可以手动重新调整控件的大小以显示文本。
答案 2 :(得分:21)
请参阅 Automatically Wrap Text in Label 。它描述了如何创建自己的成长标签。
以下是上述参考资料的全部资料来源:
using System;
using System.Text;
using System.Drawing;
using System.Windows.Forms;
public class GrowLabel : Label {
private bool mGrowing;
public GrowLabel() {
this.AutoSize = false;
}
private void resizeLabel() {
if (mGrowing) return;
try {
mGrowing = true;
Size sz = new Size(this.Width, Int32.MaxValue);
sz = TextRenderer.MeasureText(this.Text, this.Font, sz, TextFormatFlags.WordBreak);
this.Height = sz.Height;
}
finally {
mGrowing = false;
}
}
protected override void OnTextChanged(EventArgs e) {
base.OnTextChanged(e);
resizeLabel();
}
protected override void OnFontChanged(EventArgs e) {
base.OnFontChanged(e);
resizeLabel();
}
protected override void OnSizeChanged(EventArgs e) {
base.OnSizeChanged(e);
resizeLabel();
}
}
答案 3 :(得分:17)
具有讽刺意味的是,通过将AutoSize
设置为false
来关闭{{1}},可以让我获得标签控件尺寸,使其垂直和水平,这有效地允许自动换行发生。
答案 4 :(得分:8)
如果在Visual Studio中打开Text
属性的下拉列表,则可以使用enter键拆分行。除非您知道动态文本的最大尺寸,否则这显然只适用于静态文本。
答案 5 :(得分:5)
如果您想要一些动态大小调整与自动换行标签一起使用,您可以执行以下操作:
处理面板的ClientSizeChanged event
,制作
标签填充空间:
private void Panel2_ClientSizeChanged(object sender, EventArgs e)
{
label1.MaximumSize = new Size((sender as Control).ClientSize.Width - label1.Left, 10000);
}
将标签Auto-Size
设置为true
Dock
设置为Fill
答案 6 :(得分:-3)
您可以使用TextBox
并将multiline
设置为true
,将canEdit
设置为false
。