标签自动换行

时间:2012-03-01 00:55:40

标签: c# winforms c#-4.0 c#-3.0

有没有办法在.NET标签控件中进行自动换行?

我知道有另一种方法可以使用TextBox,将属性 BorderStyle 设置为none,将属性 ReadOnly 设置为true并设置属性 WordWrap 和属性 Multiline 为true。

标签上有什么东西吗?

7 个答案:

答案 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)

如果您想要一些动态大小调整与自动换行标签一起使用,您可以执行以下操作:

  1. 将标签放在面板中
  2. 处理面板的ClientSizeChanged event,制作 标签填充空间:

    private void Panel2_ClientSizeChanged(object sender, EventArgs e)
    {
        label1.MaximumSize = new Size((sender as Control).ClientSize.Width - label1.Left, 10000);
    }
    
  3. 将标签Auto-Size设置为true

  4. 将标签Dock设置为Fill

答案 6 :(得分:-3)

您可以使用TextBox并将multiline设置为true,将canEdit设置为false