c# - WS_EX_COMPOSITED causes entire app to flicker/shimmer when tab control has too many tabs

标签 c# winforms

为了解决闪烁问题,我求助于在 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。

最佳答案

看看这个问题的答案 flicker free tab control with WS_EX_COMPOSITED

可能需要一些时间来变通,但应该会有所帮助。

关于c# - WS_EX_COMPOSITED causes entire app to flicker/shimmer when tab control has too many tabs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13867978/

相关文章:

c# - 如何在.Net 中让不同类型的消费者使用 RabbitMq 消息?

c# - window : how to make the panel scroll bar to be at the TOP position on loading the form

c# - 带有摘要式身份验证的 ASP.Net Web API

c# - 如何在 .NET Core 应用程序 docker 镜像中包含依赖项?

c# - 面板控制绘画事件不适用于用户控制

c# - 使用多个数据库与使用单个数据库的优缺点

c# - 在 C# 中以另一种形式更改标签的文本?

c# - 分解 WinForms 背后的表单代码

c# - HttpListener 服务器返回错误 : (503) Service Unavailable

c# - Mongo C# JSON 阅读器期待一个值但发现 'replSetGetStatus'