16

ControlStyles.DoubleBufferControlStyles.OptimizedDoubleBuffer有什么区别?

ControlStyles.DoubleBuffer没有显示在 Intellisense 下拉列表中,而ControlStyles.OptimizedDoubleBuffer实际上已列出。

MSDN 文档并没有立即说明差异(至少对我而言)。

4

2 回答 2

10

我在这个主题上找到了这个线程。

注意:以下是关于受保护的Control财产,而不是ControlStyles

DoubleBuffered = true 设置 ControlStyles.OptimizedDoubleBuffer 和 ControlStyles.AllPaintingInWmPaint。

根据 WinForms 文档,以上是首选用法。或者,也可以通过SetStyle.

在某一时刻,意图是弃用 DoubleBuffer 并改用 OptimizedDoubleBuffer,但是该线程解释了为什么这可能是一个坏主意(我不明白)

看起来整个情况有点混乱,但最终这两个标志做了非常相似的事情 - 线程表明 OptimizedDoubleBuffer 和 DoubleBuffer 之间仍然存在细微差别,但没有解释它们是什么。

于 2009-12-27T22:54:02.707 回答
5

有趣的。引导我在网上搜索。

来自微软

OptimizedDoubleBuffer 的文档表明它将有助于减少闪烁,并且与将 UserPaint 和 AllPaintingInWmPaint ControlStyles 设置为 true 具有相同的效果。但是,如果 OptimizedDoubleBuffer ControlStyle 设置为 true 而不设置 UserPaint 和 AllPaintingInWmPaint,则不会明显减少闪烁。在设置 DoubleBuffer、UserPaint 和 AllPaintingInWmPaint ControlStyles 时,设置 UserPaint 和 AllPaintingInWmPaint ControlStyles 将导致与 Visual Studio 2003 中相同的减少闪烁优化。换句话说 - OptimizedDoubleBuffer 和过时的 DoubleBuffer 之间似乎没有任何区别。

http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=94096

于 2009-12-27T22:44:05.180 回答