双缓冲控制导致灰色出现

时间:2011-04-18 20:50:24

标签: c# winforms c#-4.0 doublebuffered

我有一个接受Control的类并将生成的图像绘制到它。在我的应用程序代码中,我正在使用Panel控件 - 这似乎运行良好,除了在重绘图像时我在控件上得到很多闪烁。我认为解决方案是在控件上启用双缓冲。我正在使用以下代码执行此操作:

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 ver 4.0的C#。

1 个答案:

答案 0 :(得分:1)

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

(通过反射设置DoubleBuffered看起来也很糟糕,但也许你出于某种原因需要这样做)