C# Winform应用程序在XP系统上闪烁

C# Winform应用程序在XP系统上闪烁,c#,.net,windows,winforms,flicker,C#,.net,Windows,Winforms,Flicker,您好,我有一个windows应用程序(winform.net framework 4)。该应用程序在windows XP系统上经常闪烁。我添加了代码: protected override CreateParams CreateParams { get { CreateParams cp = base.CreateParams; cp.ExStyle |= 0x02000000; // Turn on WS_EX_COMPOSITED

您好,我有一个windows应用程序(winform.net framework 4)。该应用程序在windows XP系统上经常闪烁。我添加了代码:

protected override CreateParams CreateParams
{
    get
    {
        CreateParams cp = base.CreateParams;
        cp.ExStyle |= 0x02000000;  // Turn on WS_EX_COMPOSITED
        return cp;
    }
}
当我添加上述代码时,闪烁被删除。它在我的开发系统上运行良好,该系统是Windows7 32位,但在WindowsXP上,闪烁增加,并且背景图像未加载

是否有任何方法可以消除所有windows操作系统中的闪烁?

您也可以尝试

SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint, true);
。这是默认情况下关闭的内置功能。根据我的经验,这并不总是有帮助,但值得一试

要启用它,请打开设计器并选择表单,然后查看表单的属性。在“Behavior”类别下,您将找到DoubleBuffered属性。把这个设置为真


为什么不使用SetStyle()?您是否为所有表单和控件激活了双缓冲?@AdrianoRepetti我是新手,请提供一个示例,说明如何使用SetStyle(),因为他在回答中使用了SetStyle()(初始化组件后,您必须在控件的构造函数中使用)。只对闪烁的控件(手动绘制的控件)执行此操作。不,我没有激活双缓冲。如何激活它?我是否需要为窗体上的每个控件单独激活它?必须在何处设置?在控件/窗体的构造函数中。必须实现这两种解决方案?i、 e setstyle和重写createParams?还是用固定方式?好吧,你最好测试一下。根据表单上实际发生的情况,结果可能会有所不同。闪烁仍然没有消失。然而,它已经减少了。现在只有form.show和form.close会导致闪烁。