C# 双缓冲控制使灰色显示

C# 双缓冲控制使灰色显示,c#,winforms,c#-4.0,doublebuffered,C#,Winforms,C# 4.0,Doublebuffered,我有一个类,它接受控件,并向其绘制生成的图像。在我的应用程序代码中,我使用了一个面板控件来实现这一点,它似乎工作得很好,只是在重新绘制图像时,控件上出现了很多闪烁。我认为解决方案是在控件上启用双缓冲。我使用以下代码执行此操作: System.Reflection.PropertyInfo aProp = typeof(System.Windows.Forms.Control).GetProperty( "DoubleBuff

我有一个类,它接受
控件
,并向其绘制生成的图像。在我的应用程序代码中,我使用了一个
面板
控件来实现这一点,它似乎工作得很好,只是在重新绘制图像时,控件上出现了很多闪烁。我认为解决方案是在控件上启用双缓冲。我使用以下代码执行此操作:

System.Reflection.PropertyInfo aProp =
                typeof(System.Windows.Forms.Control).GetProperty(
                    "DoubleBuffered",
                    System.Reflection.BindingFlags.NonPublic |
                    System.Reflection.BindingFlags.Instance);

            aProp.SetValue(drawControl, true, null); 
添加此代码后,将绘制图像,然后立即替换为默认的灰色按钮背景色-就好像系统正在绘制我自己的内容

我记得在某个地方看到一个属性,它告诉系统永远不要绘制控件(这对我来说是完美的,因为我正在用内容填充整个控件),但现在我找不到它。是否存在这样的属性,如果存在,我如何启用它


我在.NET framework 4.0版中使用C#。

如果控件上的FlatStyle当前设置为FlatStyle.System,请尝试将其设置为FlatStyle.Standard


(设置“反射双缓冲”看起来也很糟糕,但可能出于某种原因,您需要这样做)

当设置为“系统”时,整个控件绘制任务都会交给操作系统,Winforms就不会参与其中。设计师属性(如背景色)不适用于FlatStyle.System。