透明标签倒计时闪烁

时间:2012-04-11 08:20:28

标签: c# winforms label transparent

我正在尝试做一个透明的自定义标签类,我正在搜索很多关于此的文章,但我的情况不同,因为我正在尝试使用透明标签进行倒计时,然后当我使用该示例时代码闪烁成功。 我使用间隔设置为100的计时器然后更改文本自定义标签。 我不知道如何在刷新时获得更好的性能,任何想法?

class CustomLabel : Label
{
    public CustomLabel()
    {
        this.SetStyle(ControlStyles.Opaque, true);
        this.SetStyle(ControlStyles.OptimizedDoubleBuffer, false);
    }

    protected override System.Windows.Forms.CreateParams CreateParams
    {
        get
        {
            CreateParams cp = base.CreateParams;
            cp.ExStyle |= 0x20;
            return cp;
        }
    }
    public override string Text
    {
        get
        {
            return base.Text;
        }
        set
        {
            base.Text = value;
            RecreateHandle();
        }
    }
}

1 个答案:

答案 0 :(得分:1)

由于RecreateHandle()调用而闪烁。这会重新创建本机Windows窗口,当您看到旧窗口被破坏并创建新窗口时,闪烁是不可避免的。只需删除通话,就没有必要。

并且不要忘记利用built-in support来获得Label控件的透明度。