再次调整大小的另一个问题就像许多其他人一样,我使用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);
}
}
}
答案 0 :(得分:0)
当我测试您的代码时,似乎控件正被Z顺序中应该位于其下的任何控件所覆盖。您可能需要通过响应正确的绘制消息来重绘文本。我找到了一个似乎这样做的TransparentLabel here的例子。
答案 1 :(得分:0)
快速解决方案是使用链接标签控件,将其背景设置为透明并将链接长度设置为0.