当选项卡控件有太多选项卡时,WS_EX_COMPOSITED会导致整个应用程序闪烁/闪烁

时间:2012-12-13 20:30:46

标签: c# winforms

为解决闪烁问题,我在winforms应用中使用了WS_EX_COMPOSITED。这完全有效,直到选项卡控件获得如此多的选项卡,它创建“滚动箭头”。在这一点上,我的整个应用程序看起来像是不断地重新绘制,随处闪烁和闪烁。

要查看它是否只是我的应用程序,我写了一个简单的winforms程序来测试它。它包含的所有内容都是一个选项卡控件,其中包含一个按钮,用于添加选项卡,其中的表单已启用WS_EX_COMPOSITED ...当然,当我单击添加按钮并出现滚动箭头时会发生闪烁。

Multiline标签控件修复此问题,但我在应用中没有足够的空间来使用它。我的测试应用程序的代码非常简单...只需添加一个标签页和一个按钮,然后在表单中执行:

        protected override CreateParams CreateParams
    {
        get
        {
            CreateParams cp = base.CreateParams;
            cp.ExStyle |= 0x02000000;  // Turn on WS_EX_COMPOSITED
            return cp;
        }
    }

    private void button1_Click(object sender, EventArgs e)
    {
        this.tabControl1.TabPages.Add("SomeTab");
    }

如果重要的话,我正在运行win7。

1 个答案:

答案 0 :(得分:1)

查看此问题的答案flicker free tab control with WS_EX_COMPOSITED

可能需要一些时间来解决,但它应该会有所帮助。