C# 调整大小时透明标签消失

C# 调整大小时透明标签消失,c#,winforms,label,transparency,transparent,C#,Winforms,Label,Transparency,Transparent,还有一个关于调整大小的问题,和其他许多问题一样,我使用CreateParams方法设置了一个透明的标签,一切看起来都很好,工作也很好。。。除非表单重新调整大小,否则文本将消失 有人有什么想法吗?控件在那里,但是文本没有显示,好像我最小化了表单,然后恢复它显示的样子 public class TransparentLabel : Label { public TransparentLabel() { this.SetStyle(ControlStyles.Opaqu

还有一个关于调整大小的问题,和其他许多问题一样,我使用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。

这可能与您的。您的表单很可能正在泄漏资源。就其本身而言,上面的示例代码并没有重现这个问题。@LarsTech感谢我在几分钟前发现了这个问题,但我看不出它在哪里泄漏资源。抱歉,我重复了GDI对象一直保持在85的说法,但是我正在从某个地方泄漏内存,我发现内存泄漏是report viewer,已经解决了。仍然不知道为什么标签会消失:(可能是
myLabel.Invalidate()
调整大小后会有帮助吗?可能是