Прозрачная этикетка исчезает при изменении размера - PullRequest
0 голосов
/ 21 февраля 2012

Еще одна проблема с изменением размера, как и многие другие, я использовал метод CreateParams для настройки прозрачной метки, все выглядит и работает отлично ... за исключением случаев, когда при изменении размера формы текст исчезает!

У кого-нибудь есть идеи?Элемент управления есть, но текст не отображается, как если бы я свернул форму, а затем восстановил ее!

public class TransparentLabel : Label
{
    public TransparentLabel()
    {
        this.SetStyle(ControlStyles.Opaque, true);
        this.SetStyle(ControlStyles.OptimizedDoubleBuffer, false);
    }

    protected override CreateParams CreateParams
    {
        get
        {
            CreateParams parms = base.CreateParams;
            parms.ExStyle |= 0x20;  // Turn on WS_EX_TRANSPARENT
            return parms;
        }
    }
    protected override void OnPaintBackground(PaintEventArgs e)
    {
        if (base.BackgroundImage == null)
        {
            e.Graphics.DrawRectangle(new System.Drawing.Pen(this.BackColor, 1), e.ClipRectangle);
        }
        else
        {
            base.OnPaintBackground(e);
        } 

    }
}

Ответы [ 2 ]

0 голосов
/ 28 февраля 2012

Быстрое решение этой проблемы состояло в том, чтобы использовать элемент управления Label Link, установить его прозрачный фон и установить длину ссылки на 0.

0 голосов
/ 28 февраля 2012

Когда я проверяю ваш код, кажется, что элемент управления перебирается всеми элементами управления, которые должны быть под ним в Z-порядке. Возможно, вам придется перерисовать текст, ответив на правильное сообщение краски. Я нашел пример TransparentLabel здесь , который, кажется, делает это.

...