Оболочка этикеток
Есть ли способ сделать перенос слов в .NET управление меткой?
Я знаю, что есть альтернативный способ использования TextBox, сделать свойство BorderStyle равным none, свойство ReadOnly - true и установить свойство WordWrap и свойство Multiline to true.
Есть ли что-нибудь для метки?
Ответы
Ответ 1
Обратитесь к Автоматически обтекать текст в ярлыке. В нем описывается, как создать собственную растущую метку.
Вот полный источник, взятый из приведенной выше справки:
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();
}
}
Ответ 2
Измените свой максимальный размер,
label1.MaximumSize = new Size(100, 0);
И установите для параметра autosize значение true.
label1.AutoSize = true;
Что это!
Ответ 3
Просто установите для свойства Label AutoSize значение False. Затем текст будет завернут, и вы можете вручную изменить размер элемента управления, чтобы отобразить текст.
Ответ 4
По иронии судьбы, отключив AutoSize
, установив его на false
, я позволил мне получить размеры управления меткой для его размера как по вертикали, так и по горизонтали, что эффективно разрешает перенос слов.
Ответ 5
Если вы откроете раскрывающийся список для свойства Text
в Visual Studio, вы можете использовать клавишу ввода для разделения строк. Очевидно, что это будет работать только для статического текста, если вы не знаете максимальные размеры динамического текста.
Ответ 6
Если вам нужна динамическая калибровка в сочетании с ярлыком для обертывания слов, вы можете сделать следующее:
- Поместите ярлык внутри панели
-
Обращайтесь к панели 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
Ответ 7
Вы можете использовать TextBox
и установить multiline
на true
и canEdit
на false
.