标签自动换行
本文关键字:自动换行 标签 | 更新日期: 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 键拆分行。这显然仅适用于静态文本,除非您知道动态文本的最大尺寸。
如果您希望将
一些动态大小调整与自动换行标签结合使用,则可以执行以下操作:
- 将标签放在面板中
处理面板的
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
您可以使用
TextBox
并将multiline
设置为true
,canEdit
设置为false
。