5 Stimmen

WordWrap = false für ein Label einstellen

Wie sollte ich die WordWrap = false zu einer System.Windows.Forms.Label ?

Ich habe eine Kopfzeile auf einem Panel, die Folgendes anzeigen soll "MyPanel capt..." . Ich verwende also AutoEllipsis = true aber das ist nicht ausreichend.

Ich verwende auch " AutoSize = true ", denn ich möchte, dass das Etikett so wenig Platz wie möglich einnimmt.

Apropos, Visual Basic 6.0 hat es getan.

0voto

AMissico Punkte 21179

Ah, ich glaube, ich verstehe jetzt endlich, welchen Effekt Sie wollen.

Sie möchten ein Etikett, das die automatische Größenanpassung bis zu einem bestimmten Höchstwert ermöglicht. Nach dem Höchstwert möchten Sie AutoEllipsis anzeigen. Ist das richtig?

Wenn ja, dann müssen Sie die Eigenschaften MaximumSize, AutoEllipsis und AutoSize einstellen. Dann wird das Etikett so klein wie möglich sein. Wenn der Text die von Ihnen angegebene maximale Größe überschreitet, wird der Text abgeschnitten und eine Ellipse angehängt. Sie benötigen dafür keinen Code.

0voto

user922020 Punkte 663

Ich verwende ein FlowLayoutPanel, um die Etiketten mit links nach rechts Fluss zu halten. So Autosize und überlappen bricht meine schön ausgerichtete Spalten. Ich denke, der direkteste Weg ist, nur Paint selbst zu implementieren. Hilfsprogramme existieren, um die Ellipsis für Sie zu tun.

Das letzte TextFormatFlags hat ein Dutzend Optionen, die Ihnen Tonnen von lästigem Zeichencode ersparen.

    private void templateLabel_Paint(object sender, PaintEventArgs e)
    {
        Label lbl = sender as Label;
        e.Graphics.Clear(lbl.BackColor);

        TextRenderer.DrawText(e.Graphics, lbl.Text, lbl.Font,
            lbl.ClientRectangle,
            Color.Black,
            lbl.BackColor, TextFormatFlags.EndEllipsis);
    }

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X