Seite 1 von 1

[C#] Clip Label / ToolStripStatusLabel

Verfasst: 20.01.2012, 00:44
von BeRsErKeR
Hallo,

ich habe folgende Problemstellung. Ein StatusStrip enthält mehrere Elemente (z.B. ein paar ToolStripLabels). Eines dieser Labels hat die Eigenschaft Spring gesetzt, sodass es die restliche Größe ausfüllt. Nun ist es der Fall, dass der Inhalt recht lang werden kann (es handelt sich um einen absoluten Dateipfad). Wenn der String zu lang wird (z.B. auch wenn die Größe des StatusStrips bzw. des Elternfensters verändert wird) möchte ich realisieren, dass das Label ab einer bestimmten Stelle abgeschnitten wird und 3 Punkte (...) angehängt werden.

Beispiel:

C:\MyFile
C:\MyFolder1\MyFolder2\File -> C:\MyFolder1\My Fo...


Wenn ich die maximal anzeigbare Stringlänge wüsste, könnte ich einfach den String clippen. Allerdings hängt dies ja unter anderem von den jeweiligen Buchstaben usw. ab.

Die Frage ist nun, ob C# dieses Verhalten schon irgendwie anbietet oder aber ob man es über Hilfsklassen/Hilfsfunktionen möglichst performant realisieren kann.

Ich kann z.B. ermitteln wieviel Platz ein bestimmter Text in Pixeln benötigt. Allerdings müsste ich dann den String in einer Schleife verkleinern und dann jedesmal den geclippten String auf die Anzeigegröße prüfen und das solange bis er passt. Das wäre mir aber deutlich zu unperformant.

Habt ihr da Ideen/Kenntnisse?

Die Google-Suche ergab leider nichts, eventuell auch weil ich nicht so recht weiß wie dieses Verhalten genannt wird. Eigentlich wird es ja des öfteren in Programmen genutzt (nicht unbedingt Programme, die in C# geschrieben wurden).