标签自动换行

Sha*_*500 59 c# winforms c#-3.0 c#-4.0

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

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

有标签的东西吗?

fa *_*ild 178

改变你的最大尺寸,

label1.MaximumSize = new Size(100, 0);
Run Code Online (Sandbox Code Playgroud)

并将您的自动调整大小设置为true.

label1.AutoSize = true;
Run Code Online (Sandbox Code Playgroud)

而已!

  • 这应该是公认的答案 (14认同)

Abd*_*ami 41

只需将Label AutoSize属性设置为False即可.然后文本将被包装,您可以手动重新调整控件的大小以显示文本.


min*_*dia 22

请参阅标签中的自动换行文本.它描述了如何创建自己的成长标签.

以下是从上述参考资料中获取的完整资料来源:

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();
  }
}
Run Code Online (Sandbox Code Playgroud)


atc*_*way 19

具有讽刺意味的是,AutoSize通过将其设置为关闭false允许我获得标签控件尺寸以在垂直和水平方向上调整尺寸,这有效地允许自动换行.


Jur*_*eri 8

如果Text在Visual Studio中打开属性的下拉列表,则可以使用enter键拆分行.除非您知道动态文本的最大尺寸,否则这显然只适用于静态文本.


noe*_*cus 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);
    }
    
    Run Code Online (Sandbox Code Playgroud)
  3. 设置Auto-Size为标签true

  4. 设置Dock为标签Fill