Nag*_*agu 179 .net c# controls label winforms
我们如何在Windows窗体中获得标签的自动换行功能?
我在一个面板中放置了一个标签,并添加了一些动态标签的文字.但它超出了面板长度.我怎么解决这个问题?
Joh*_*zen 343
实际上,接受的答案是不必要的复杂.
如果将标签设置为AutoSize,它将随您放入的任何文本自动增长.(这包括垂直增长.)
如果要使其以特定宽度进行自动换行,可以设置MaximumSize属性.
myLabel.MaximumSize = new Size(100, 0);
myLabel.AutoSize = true;
经过测试和工作.
Jon*_*son 155
快速回答:关闭 AutoSize.
这里的一个大问题是标签不会自动改变其高度(仅宽度).为了实现这一点,您需要对标签进行子类化并包含垂直调整大小逻辑.
基本上你在OnPaint中需要做的是:
您还需要在构造函数中设置ResizeRedraw样式标志.
ale*_*555 22
在我的情况下(面板上的标签)我设置label.AutoSize = false和label.Dock = Fill.标签文本会自动换行.
Seb*_*ldi 16
坏消息:没有autowrap属性.
好消息:隧道尽头有一盏灯!
您可以通过编程方式完成此操作以动态调整大小,但这是最简单的解决方案:
MaximumSize =(宽度,高度),其中宽度 =您希望标签的最大尺寸和高度 =您希望它包裹多少像素

小智 11
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();
    }
}
小智 6
我必须找到一个快速的解决方案,所以我只使用了具有这些属性的TextBox:
var myLabel = new TextBox
                    {
                        Text = "xxx xxx xxx",
                        WordWrap = true,
                        AutoSize = false,
                        Enabled = false,
                        Size = new Size(60, 30),
                        BorderStyle = BorderStyle.None,
                        Multiline =  true,
                        BackColor =  container.BackColor
                    };
| 归档时间: | 
 | 
| 查看次数: | 159582 次 | 
| 最近记录: |