web-dev-qa-db-de.com

Beschriften Sie den Zeilenumbruch

Gibt es eine Möglichkeit, einen Zeilenumbruch in einem . NET Label-Steuerelement durchzuführen?

Ich weiß, dass es eine alternative Möglichkeit gibt, ein TextBox , make property BorderStyle zu none, property ReadOnly auf true setzen und Eigenschaft WordWrap und Eigenschaft Multiline zu wahr.

Gibt es etwas für ein Etikett?

56
Sharpeye500

Siehe Text automatisch in Etikett umbrechen. Es wird beschrieben, wie Sie Ihr eigenes wachsendes Etikett erstellen.

Hier ist die vollständige Quelle aus der obigen Referenz entnommen:

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

Ändern Sie Ihre maximale Größe,

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

Und setzen Sie Ihre Autosize auf true.

label1.AutoSize = true;

Das ist es!

172
fa wildchild

Legen Sie einfach die AutoSize-Eigenschaft für Beschriftung auf Falsch fest. Dann wird der Text umgebrochen und Sie können die Größe des Steuerelements manuell ändern, um den Text anzuzeigen.

38

Ironischerweise erlaubte es mir das Ausschalten von AutoSize durch Setzen auf false, die Abmessungen des Beschriftungssteuerelements sowohl auf vertikal als auch horizontal anzupassen, was effektiv das Auftreten von Zeilenumbrüchen ermöglicht .

17
atconway

Wenn Sie das Dropdown-Menü für die Eigenschaft Text in Visual Studio öffnen, können Sie mit der Eingabetaste Linien teilen. Dies funktioniert natürlich nur für statischen Text, es sei denn, Sie kennen die maximalen Abmessungen von dynamischem Text.

8

Wenn Sie eine dynamische Größenanpassung in Verbindung mit einer Beschriftung mit Zeilenumbruch wünschen, können Sie Folgendes tun:

  1. Legen Sie das Etikett in eine Platte
  2. Behandle das ClientSizeChanged event für das Bedienfeld, wobei das Etikett den Raum ausfüllt:

    private void Panel2_ClientSizeChanged(object sender, EventArgs e)
    {
        label1.MaximumSize = new Size((sender as Control).ClientSize.Width - label1.Left, 10000);
    }
    
  3. Einstellen Auto-Size für das Label zu true

  4. Setze Dock für das Label auf Fill
5
noelicus