标签文字包装

有没有办法在.NET标签控件中做一个单词包装?

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

有什么标签?

请参阅自动换行标签中的文字 。 它描述了如何创build自己的成长标签。

这里是从上面的参考中得到的全部源代码:

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

改变你的最大尺寸,

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

并将您的autosize设置为true。

 label1.AutoSize = true; 

而已!

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

具有讽刺意味的是,通过将AutoSize设置为false来closuresAutoSize ,可以让我得到标签控件的尺寸,从而在垂直和水平方向上调整尺寸,从而有效地实现文字换行。

如果你想要一个dynamic的大小与一个单词包装标签,你可以做以下几点:

  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. 为标签设置DockFill

如果在Visual Studio中打开Text属性的下拉菜单,则可以使用Enter键分割线。 这显然只适用于静态文本,除非你知道dynamic文本的最大尺寸。

您可以使用一个TextBox ,并将multiline设置为true并可以canEditfalse