透明标签在调整大小时消失

本文关键字:小时 消失 调整 标签 透明 | 更新日期: 2023-09-27 18:25:22

再次出现调整大小的另一个问题,就像许多其他问题一样,我使用了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);
        } 
    }
}

透明标签在调整大小时消失

当我测试您的代码时,控件似乎被应该在其下的任何控件按Z顺序绘制。您可能需要通过响应右侧绘制消息来重新绘制文本。我在这里找到了一个透明标签的例子,它似乎可以做到这一点。

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