我有一個大面板,裏面有很多子面板。這些子面板內部是兩個帶有透明背景的文本字段。它基本上是從頭開始構建的ListBox。背景顏色變化閃爍
我想要做的是循環每個這些子面板,並將其背景顏色更改爲選定的顏色,當用戶單擊一個。
但是,當我點擊一個新的子面板時,舊的背景顏色和新的背景顏色之間會有一個非常明顯的閃爍。
注:淺藍色是一個突出顯示顏色,當用戶懸停在面板。
我已經嘗試設置DoubleBuffered爲true爲主面板和窗體本身沒有太多的運氣。我也嘗試將ControlStyles.AllPaintingInWmPaint,ControlStyles.UserPaint和ControlStyles.OptimizedDoubleBuffer設置爲true。
public class List : Panel
{
private Panel[] items;
private Label[] header; // Children of items
private Label[] footer; // Children of items
public List()
{
SetStyle(ControlStyles.AllPaintingInWmPaint, true);
SetStyle(ControlStyles.UserPaint, true);
SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
AutoScroll = true;
BackColor = Color.White;
//DoubleBuffered = true;
HorizontalScroll.Visible = false;
HorizontalScroll.Enabled = false;
VerticalScroll.Visible = true;
VerticalScroll.Enabled = true;
}
public void renderItemsSelected(Color color)
{
for (int q = 0; q < itemsSelected.Count; q++)
{
int i = getPos();
items[i].BackColor = color;
}
}
}
所以我想知道如果有人有任何想法?
爲'items'數組中的每個項目啓用雙緩衝。謝謝。 – Khronos 2012-02-23 06:20:02