如何减少应用程序中的闪烁?

时间:2012-10-07 16:41:04

标签: c# winforms paint flicker

我开发了一个使用Main表单和TabControl的WinForms应用程序。在选项卡控件上有几个使用库中控件的选项卡。我最近注意到,在调整应用程序大小时,整个应用程序都像疯了一样闪烁。

我尝试了什么?

我尝试将以下代码添加到表单和其中一个控件的_load事件中。然后我通过选项卡切换到该控件并尝试调整大小但没有区别,闪烁仍然非常糟糕。

DoubleBuffered = true; 

编辑1

我在一个标签上也有WPF控件。我很好奇是否会引起闪烁。

1 个答案:

答案 0 :(得分:0)

有几种方法可以解决这个问题:

对于表单resize Events(onResizeBegin& on ResizeEnd),请使用以下代码:

protected override void OnResizeBegin(EventArgs e) 
 {
    SuspendLayout();
    base.OnResizeBegin(e);
 }

protected override void OnResizeEnd(EventArgs e) 
 {
    ResumeLayout();
    base.OnResizeEnd(e);
 }

- 以Contstructor的形式使用此代码

this.SetStyle( ControlStyles.AllPaintingInWmPaint, true );
this.SetStyle( ControlStyles.UserPaint, true );
this.SetStyle( ControlStyles.OptimizedDoubleBuffer, true );
this.SetStyle( ControlStyles.ResizeRedraw, true );