反正只有使ListBox
中的單個項目無效嗎?似乎沒有獲得項目矩形的方法,或者即使特定項目可見(除了爲控件中的每個像素調用IndexFromPoint
/至少一列中的每個像素)。只使ListBox中的一個項目無效
這是C#的WinForms(未WPF)。
什麼,我試圖做更多信息:
我與它的許多項ListBox
,我想了一組「按鈕」出現在你將鼠標懸停在(如紅色物品X刪除)。除了在包含10個或更多項目的列表上,每當您將鼠標懸停在新項目上時,它都會導致可見的重繪,因爲我無效整個控件。數據不會改變,只會改變顯示。
編輯:更多信息和以前的嘗試
我已經繼承ListBox
和OnDrawItem
如此保護的ListBox
方法執行我的畫都可以使用。
我試過以下不同級別的成功。可變this
是擴展ListBox
,index
是繪製在,old_index
是先前被繪製在所述項目的項目。
// Causes flicker of entire list, but works
this.Invalidate();
// Causes flicker of selected item, but works
int sel_index = this.SelectedIndex;
this.SelectedIndex = old_index;
this.SelectedIndex = index;
this.SelectedIndex = sel_index;
// Does not work
if (old_index >= 0)
this.RefreshItem(old_index);
if (index >= 0)
this.RefreshItem(index);
嘿謝謝你的答案,這幫助我閃爍的列表框。我也用:this.SetStyle(ControlStyles.OptimizedDoubleBuffer,true);以幫助減少閃爍。 – ChandlerPelhams