Подтвердить что ты не робот

Оболочка этикеток

Есть ли способ сделать перенос слов в .NET управление меткой?

Я знаю, что есть альтернативный способ использования TextBox, сделать свойство BorderStyle равным none, свойство ReadOnly - true и установить свойство WordWrap и свойство Multiline to true.

Есть ли что-нибудь для метки?

4b9b3361

Ответ 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.