2011-02-18 53 views
1

我有一個自定義控件,從Panel繼承。我最終在這個面板上放了幾個DataGrid和標籤。當它變得太長時,它會自動爲我滾動。雙緩衝精簡框架中的自定義控件

我真的需要滾動,因爲它是一個掃描對象的列表,它會變得比屏幕上允許的空間大。

但是當我滾動它閃爍很多。我很樂意讓它順利滾動。

我在那裏看過幾個「Compact Framework」雙緩衝區的例子,但它們都是雙緩衝繪製方法(即graphics.DrawString)。我的自定義控件本身不做任何繪畫。它只是在面板上放置正常的網格和標籤,並讓面板畫上它們。

是否有一種方法來加倍緩衝區正常控制(又不是自定義繪畫)?

+0

如果你找不到答案,也許有一種方法可以延遲更新,直到控件完成移動/滾動,如果這會有所幫助。 – 2011-02-18 04:30:24

回答

1

Compact Framework控件沒有DoubleBuffered屬性或底層的雙緩衝機制。沒有辦法添加它。

獲得雙緩衝的唯一方法是重寫控件的繪製並自己做。

+0

感謝您的指針。我嘗試在面板和麪板上的OnPaint方法中使用BitBlt控件,但它並沒有改善滾動的扭曲(它沒有太多閃爍,它實際上是繪製了控件的部分內容,而且繪畫太慢而笨重)。自從我的C++日子(幾年前和幾年前)以來,我沒有必須用BitBlt做很多事情。所以我可能做錯了。如果您有任何示例代碼可以幫助實現雙緩衝,那將非常棒。 – Vaccano 2011-02-18 21:16:32