Setting the DoubleBuffered property does not affect the TreeView control. If you want to reduce flicker when the TreeView is drawn, use the BeginUpdate and EndUpdate methods.
情況一:沒有應用上 BeginUpdate()、EndUpdate()
可以從下圖發現,TreeView 會一直閃爍且 ScrollBar 會上下跑情況二:使用 BeginUpdate()、EndUpdate()
this.BeginUpdate();
// 填入 TreeNode.CheckBox 並 Highlight
this.EndUpdate();
可以從下圖發現,TreeView 只會閃一下
protected override void WndProc(ref Message m)
{
if (m.Msg == 0x0014) // 禁止清除背景訊息,也可以查關鍵字 WM_ERASEBKGND
return;
base.WndProc(ref m);
}
可以從下圖發現,TreeView 就完全不會閃爍
沒有留言:
張貼留言