2012-02-21 27 views
0

再次调整大小的另一个问题与其他许多其他问题一样,我使用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

这可能与你的[其它问题](HTTP://计算器。 COM/q /719186分之9377337)。你的表单很可能泄露资源。上面的示例代码本身不会重现问题。 – LarsTech 2012-02-21 13:38:24

+0

@LarsTech谢谢你,我刚才发现,但我不知道它在哪里泄漏资源。对不起重新短语说,GDI对象始终停留在85,但我从某处泄漏内存 – Neo 2012-02-21 14:18:23

+0

我想出内存泄漏是报告查看器已被解决。仍然不知道为什么标签消失:( – Neo 2012-02-27 15:10:38

回答

0

的迅速解决,这是使用链路Label控件,设置它的背景透明,并设置链路长度为0

0

当我测试你的代码时,看起来控件正在被应该在Z顺序下的任何控件绘制。您可能需要通过响应正确的绘制消息来重新绘制文本。我发现了一个TransparentLabel here的例子,这似乎是这样做的。

+0

奇怪的是我最初尝试过他的脚本,并没有工作。 – Neo 2012-02-28 10:38:48

相关问题