我开发了一个使用主窗体和 TabControl 的 WinForms 应用程序。选项卡控件上有几个选项卡,它们使用库中的控件。我最近注意到,在调整应用程序的大小时,整个应用程序会疯狂地闪烁。
我尝试了什么?
我尝试将以下代码添加到表单和其中一个控件的 _load 事件中。然后我通过选项卡切换到该控件并尝试调整大小但没有区别,闪烁仍然非常糟糕。
DoubleBuffered = true;
编辑 1
我在一个选项卡上也有 WPF 控件。我很好奇这是否也会导致闪烁。
有几种方法可以解决这个问题:
对于表单调整大小事件(onResizeBegin & on ResizeEnd),使用以下代码:
protected override void OnResizeBegin(EventArgs e)
{
SuspendLayout();
base.OnResizeBegin(e);
}
protected override void OnResizeEnd(EventArgs e)
{
ResumeLayout();
base.OnResizeEnd(e);
}
- 以构造函数的形式使用此代码:
this.SetStyle( ControlStyles.AllPaintingInWmPaint, true );
this.SetStyle( ControlStyles.UserPaint, true );
this.SetStyle( ControlStyles.OptimizedDoubleBuffer, true );
this.SetStyle( ControlStyles.ResizeRedraw, true );