2010-05-25 16 views
6

Ich habe eine .NET-Anwendung mit einem StatusStrip mit drei ToolTipStatusLabels. Der Text der Etiketten wird von der Anwendung ausgefüllt, da sie den Status anzeigen. In einigen Fällen können sie einen leeren Text enthalten.trunction in ToolTipStatusLabel automatisch

Wenn ich die Größe des Fensters ändere, werden die ToolTipStatusLabels ausgeblendet, wenn sie nicht in den StatusStrip passen. Ich möchte den Text abgeschnitten haben, wenn das Label nicht in den StatusStrip passen kann. Das Standardverhalten zum Ausblenden des Labels erschwert die Unterscheidung zwischen leerem oder verstecktem Label.

Um anzuzeigen, dass der Text automatisch abgeschnitten wird, sollte dies mit einer Ellipse (...) angegeben werden. Wie kann das gemacht werden?

Antwort

11

Legen Sie die Spring-Eigenschaft des Labels auf True fest, um die Größe automatisch anzupassen. Um Ellipsen zu erhalten, müssen Sie das Bild überschreiben. Fügen Sie Ihrem Projekt eine neue Klasse hinzu und fügen Sie den unten gezeigten Code ein. Kompilieren. Sie erhalten das neue SpringLabel-Steuerelement in der Statusleisten-Designer-Dropdown-Liste.

Sie müssen mehr arbeiten, wenn Sie die Image- oder TextAlign-Eigenschaften verwenden.

+0

Gut, diese Klasse fügt die Ellipsen hinzu, wenn die Spring-Eigenschaft festgelegt ist. Aber ich habe mehr als ein ToolStripStatusLabel (oder SpringLabel jetzt), tatsächlich gibt es drei. Wenn ich die Größe des Fensters ändere, sollte nur das letzte sichtbare Label abgeschnitten werden. Wenn Sie die Spring-Eigenschaft festlegen, werden alle gleichzeitig skaliert. Gibt es eine Möglichkeit, das resize-Ereignis abzufangen und die Spring-Eigenschaft des linken Nachbarn selektiv festzulegen, wenn das umgebende Rechteck null ist? – harper

+0

Verwenden Sie das StatusStrip.Resize-Ereignis und legen Sie die Etikettengrößen selbst fest. –

+0

Ich würde diese +10 geben, wenn ich könnte –