透明标签消失在调整大小

时间:2012-02-21 13:24:15

标签: c# winforms label transparency transparent

再次调整大小的另一个问题就像许多其他人一样,我使用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 :(得分:0)

当我测试您的代码时,似乎控件正被Z顺序中应该位于其下的任何控件所覆盖。您可能需要通过响应正确的绘制消息来重绘文本。我找到了一个似乎这样做的TransparentLabel here的例子。

答案 1 :(得分:0)

快速解决方案是使用链接标签控件,将其背景设置为透明并将链接长度设置为0.