webentwicklung-frage-antwort-db.com.de

Programmgesteuertes Hinzufügen von Beschriftungen zu Windows Form (Länge der Beschriftung?)

In meinem Code erstelle ich eine Beschriftung mit:

Label namelabel = new Label();
namelabel.Location = new Point(13, 13);
namelabel.Text = name;
this.Controls.Add(namelabel);

Die Zeichenfolge namens name ist zuvor definiert und hat eine Länge von ca. 50 Zeichen. In der Beschriftung meines Formulars werden jedoch nur die ersten 15 angezeigt. Ich habe versucht, mit dem MaximumSize des Etiketts herumzuspielen, aber ohne Erfolg.

9
Wilson

Versuchen Sie, die AutoSize-Eigenschaft hinzuzufügen:

namelabel.AutoSize = true;

Wenn Sie mit dem Entwurfseditor eine Beschriftung in ein Formular einfügen, ist diese Eigenschaft standardmäßig true. Wenn Sie die Beschriftung jedoch wie zuvor in Code erstellen, ist die Standardeinstellung false.

9
LarsTech

Probieren Sie die Eigenschaft AutoSize = true;

MSDN-Verweise

Eine andere Möglichkeit ist die Verwendung der MeasureString-Methode der Graphics-Klasse

Graphics e =  nameLabel.CreateGraphics();
SizeF stringSize = new SizeF();
stringSize = e.MeasureString(name, namelabel.Font);
nameLabel.Width = (int)stringSize.Width;
3
Steve

Sie können die Eigenschaft Label.AutoSize verwenden, um die Breite Ihres Etiketts automatisch so anzupassen, dass alle in Label.Text gespeicherten Inhalte korrekt angezeigt werden.

Es ist erwähnenswert, dass beim Erstellen des Etiketts mit dem Design-Editor die Standardeinstellung für diese Eigenschaft true ist. Wenn Sie jedoch ein Etikett selbst programmgesteuert erstellen, ist die Standardeinstellung für die Eigenschaft false.

namelabel.AutoSize = true;

Natürlich können Sie die Breite Ihres Etiketts auch manuell einstellen, indem Sie Folgendes verwenden, um die erforderliche Breite zu berechnen.

Graphics namelabel_g = namelabel.CreateGraphics ();

namelabel.Width = namelabel_g.MeasureString (
  namelabel.Text, namelabel.Font
);

Dokumentation zur Verwendung von Label.AutoSize finden Sie unter msdn:


Dokumentation zu Graphics.MeasureString finden Sie hier:

panel_saved.Controls.Add(
    new Label 
    { 
        Location = new Point(1, 2), 
        Size = new System.Drawing.Size(43, 18), 
        BorderStyle = BorderStyle.FixedSingle, 
        Text = "yourdata" 
    });
0
Dipesh adhikari