标签文字包装
有没有办法在.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的大小与一个单词包装标签,你可以做以下几点:
- 把标签放在面板里面
-
处理面板的
ClientSizeChanged event
,使标签填充空间:private void Panel2_ClientSizeChanged(object sender, EventArgs e) { label1.MaximumSize = new Size((sender as Control).ClientSize.Width - label1.Left, 10000); }
-
将标签的
Auto-Size
设置为true
- 为标签设置
Dock
以Fill
如果在Visual Studio中打开Text
属性的下拉菜单,则可以使用Enter键分割线。 这显然只适用于静态文本,除非你知道dynamic文本的最大尺寸。
您可以使用一个TextBox
,并将multiline
设置为true
并可以canEdit
为false
。