Hinzufügen fehlender Eigenschaften Unterstützung zu ToolStripStatusLabel, das OnPaint überschreibt?

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Hinzufügen fehlender Eigenschaften Unterstützung zu ToolStripStatusLabel, das OnPaint überschreibt?

by Anonymous » 02 Feb 2025, 20:05

Ich verwende die folgende Klasse, die von ToolStripStatusLabel erbt und die Funktion zu Ellipsis -Text hinzugefügt wird, die zu lang ist, um im Steuerelement angezeigt zu werden.

Code: Select all

[ToolStripItemDesignerAvailability(ToolStripItemDesignerAvailability.StatusStrip)]
public partial class SpringLabel : ToolStripStatusLabel
{
public SpringLabel()
{
this.Spring = true;
}

protected override void OnPaint(PaintEventArgs e)
{
var flags = TextFormatFlags.Left | TextFormatFlags.EndEllipsis | TextFormatFlags.VerticalCenter;
var bounds = new Rectangle(0, 0, this.Bounds.Width, this.Bounds.Height);
TextRenderer.DrawText(e.Graphics, this.Text, this.Font, bounds, this.ForeColor, flags);
}
}
Dies funktioniert einwandfrei, fehlt jedoch die Unterstützung für verschiedene Eigenschaften der übergeordneten Steuerung, wie z. B. Grenzen sowie jegliche Unterstützung für Bilder usw. Gibt es eine Möglichkeit, den ToolStripStatusLabel -Code zu erreichen, um einen Teil seines Verhaltens zu kopieren oder zu emulieren? Ich habe wirklich keine Ideen, wo ich anfangen soll.

Code: Select all

[ToolStripItemDesignerAvailability(ToolStripItemDesignerAvailability.StatusStrip)]
public partial class SpringLabel : ToolStripStatusLabel
{
private string? _sltext;
public new string? Text
{
get => _sltext;
set { _sltext = value; ToolTipText = _sltext; Invalidate(); }
}
public SpringLabel()
{
this.Spring = true;
}

protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
var flags = TextFormatFlags.Left | TextFormatFlags.EndEllipsis | TextFormatFlags.VerticalCenter;
var bounds = new Rectangle(0, 0, this.Bounds.Width, this.Bounds.Height);
TextRenderer.DrawText(e.Graphics, _sltext, this.Font, bounds, this.ForeColor, flags);
}
}
< /code>
Dies funktioniert gut, unterstützt aber wahrscheinlich einige Eigenschaften wie Bilder. Auch die übergeordnete StatusStrip -Steuerung scheint zu erfordern, dass das LayoutStyle 
auf die Standardeinstellung der Tabelle .

Top