标签自动换行

本文关键字:自动换行 标签 | 更新日期: 2023-09-27 18:26:18

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

我知道有一种使用文本框的替代方法,将属性 BorderStyle 设置为无,将属性 ReadOnly 设置为 true,并将属性 WordWrap 和属性 Multiline 设置为 true。

标签有什么东西吗?

标签自动换行

更改最大大小,

label1.MaximumSize = new Size(100, 0);

并将自动大小设置为 true。

label1.AutoSize = true;

就是这样!

只需将"标签自动调整大小"属性设置为 False。然后,文本将被换行,您可以手动调整控件的大小以显示文本。

请参阅在标签中自动换行。它描述了如何创建自己的种植标签。

以下是上述参考资料的完整来源:

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();
  }
}
具有

讽刺意味的是,通过将AutoSize设置为false来关闭它,使我能够让标签控件尺寸在垂直和水平方向上调整其大小,从而有效地允许进行自动换行。

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

如果您希望将

一些动态大小调整与自动换行标签结合使用,则可以执行以下操作:

  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
您可以使用

TextBox并将multiline设置为truecanEdit设置为false