gpt4 book ai didi

c# - TabControl 闪烁

转载 作者:行者123 更新时间:2023-11-30 20:02:19 27 4
gpt4 key购买 nike

我有一个 TabControl,我可以在其中添加/删除多个 TabPage。

当我添加足够多的页面以至于必须显示导航按钮时,我遇到了闪烁问题。

当导航按钮(左右导航的 2 个箭头)未显示时,我根本没有闪烁。闪烁与正在添加的表单或页面的大小调整无关。

我试过:

  • 双缓冲
  • SetStyles(...所有用于提高性能的参数)

编辑:在我的主 WinForm 中,我添加了这段代码以防止在调整窗口大小时出现渲染错误:

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

移除后,我的 TabControl 不再闪烁。看来我将不得不忍受调整大小渲染错误,因为它比持续闪烁更方便。

最佳答案

您遗漏了一个重要的细节。 This question强烈建议您做的比您描述的更多,您还覆盖了表单中的 CreateParams 属性以打开窗口的 WS_EX_COMPOSITED 样式标志。它为窗体及其所有控件启用双缓冲,这是一般情况下抑制闪烁的好方法。

但它可能会产生一些有害的副作用。 TabControl 实际上是一个麻烦制造者,它呈现的方式有些困惑,与 WS_EX_COMPOSITED 不兼容。一旦添加了太多选项卡并出现导航按钮,它就会开始不断重绘自己。被认为是快速闪烁。 native 选项卡控件渲染器有很多错误,编写它的 Microsoft 团队做得非常糟糕。

此错误没有已知的解决方法,您将不得不接受一个较小的替代方案。

关于c# - TabControl 闪烁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16925369/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com