указать усечение в ToolTipStatusLabel автоматически - PullRequest
8 голосов
/ 25 мая 2010

У меня есть приложение .NET с StatusStrip, содержащее три ToolTipStatusLabels. Текст меток заполняется из приложения, так как они показывают статус. В некоторых случаях они могут содержать пустой текст.

Когда я изменяю размер окна, метки ToolTipStatusLabels скрываются, когда их невозможно разместить в StatusStrip. Я хотел бы, чтобы текст был обрезан, когда метка не помещается в StatusStrip. Поведение по умолчанию для скрытия метки затрудняет различие между пустым текстом или скрытой меткой.

Чтобы указать, что текст усекается автоматически, это должно быть отмечено многоточием (...). Как это можно сделать?

1 Ответ

14 голосов
/ 25 мая 2010

Установите для свойства Spring метки значение True, чтобы получить его для автоматической регулировки его размера. Чтобы получить эллипсы, вам нужно переопределить картину. Добавьте новый класс в ваш проект и вставьте код, показанный ниже. Компиляция. Вы получите новый элемент управления SpringLabel в раскрывающемся списке дизайнера полосы состояния.

using System;
using System.Drawing;
using System.Windows.Forms;
using System.Windows.Forms.Design;

[ToolStripItemDesignerAvailability(ToolStripItemDesignerAvailability.StatusStrip)]
public class SpringLabel : ToolStripStatusLabel {
    public SpringLabel() {
        this.Spring = true;
    }
    protected override void OnPaint(PaintEventArgs e) {
        var flags = TextFormatFlags.Left | TextFormatFlags.EndEllipsis;
        var bounds = new Rectangle(0, 0, this.Bounds.Width, this.Bounds.Height);
        TextRenderer.DrawText(e.Graphics, this.Text, this.Font, bounds, this.ForeColor, flags);
    }
}

Вам нужно будет больше работать, если вы используете свойства Image или TextAlign.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...