WS_EX_COMPOSITED会导致整个应用在选项卡控件具有太多选项卡时闪烁/闪烁



为了解决闪烁问题,我在winforms应用程序中使用了WS_EX_COMPOSITED。这非常有效,直到选项卡控件获得如此多的选项卡以创建"滚动箭头"。在这一点上,我的整个应用程序看起来就像它不断重绘一样,到处闪烁和闪烁。

为了看看它是否只是我的应用程序,我编写了一个简单的winforms程序来测试它。它所包含的只是一个带有添加选项卡的按钮的选项卡控件,并且其打开的窗体WS_EX_COMPOSITED已启用...果然,当我单击添加按钮并出现滚动箭头时,会发生闪烁。

多行选项卡控件可以解决此问题,但我在应用程序中没有空间使用它。代码对于我的测试应用程序来说非常简单...刚刚添加了一个标签页和一个按钮,然后在表单中做了:

        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。

看看这个问题的答案 使用WS_EX_COMPOSITED闪烁的无标签控件

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

最新更新