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