如何获得一个标签的换行功能的文本,这是越界?


当前回答

这个问题的简单答案是改变Label的DOCK属性。默认为“NONE”。

其他回答

从MSDN,自动换行文本标签:

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

我建议将标签的AutoEllipsis属性设置为true, AutoSize设置为false。如果文本长度超过标签界限,它将在结尾添加三个点(…),并自动将完整的文本设置为工具提示。因此,用户可以通过将鼠标悬停在标签上看到完整的文本。

把标签放在面板里 处理面板的ClientSizeChanged事件,使 标签填充空间: Panel2_ClientSizeChanged(对象发送器,EventArgs e) { label1。MaximumSize =新大小((发送方作为控件). clientsize . Size。宽度- label1。离开,10000); } 将标签的自动大小设置为true 将标签“Dock”设置为“Fill”

除了第2步,其他步骤通常都在设计器窗口中完成。

我有一个标签,自动包装和增长到任何大小在右停靠的自动大小面板,其宽度是由其他内容设置。

标签(在tablelayoutpanel) Autosize = True。

tableelayoutpanel(在面板)Autosize = True, AutoSizeMode = GrowAndShrink, Dock =底部,一列SizeType = 100%,一行SizeType = 100%。

面板(右停靠形式)AutoSize = True, AutoSizeMode = GrowAndShrink, Dock =右。

设置AutoEllipsis属性为“TRUE”,AutoSize属性为“FALSE”。