如果是ui主執行緒加載不會閃爍,把加載資料的代碼通過委托放入子執行緒就會閃爍。我是自定義的控制元件,也采用了網上說的雙快取等機制,也試過beginupdata方法,均沒有用,不知道有沒有大佬知道原因。而且加載前9行資料不會閃爍,從第十行開始出現閃爍問題。
uj5u.com熱心網友回復:
修改雙快取TreeView的,list的不知道管用不,試一試。TreeView不閃了
public class ListViewEx : ListView
{
protected override void OnHandleCreated(EventArgs e)
{
SendMessage(this.Handle, TVM_SETEXTENDEDSTYLE, (IntPtr)TVS_EX_DOUBLEBUFFER, (IntPtr)TVS_EX_DOUBLEBUFFER);
base.OnHandleCreated(e);
}
private const int TVM_SETEXTENDEDSTYLE = 0x1100 + 44;
private const int TVM_GETEXTENDEDSTYLE = 0x1100 + 45;
private const int TVS_EX_DOUBLEBUFFER = 0x0004;
[DllImport("user32.dll")]
private static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wp, IntPtr lp);
}
uj5u.com熱心網友回復:
你的意思是雙快取只適用treeview嗎?
uj5u.com熱心網友回復:
ListView 試了么?有效果么?
uj5u.com熱心網友回復:
listview虛擬加載uj5u.com熱心網友回復:
沒用過雙快取也沒碰到這種問題,還是你代碼哪里有問題吧。你可以貼代碼上來uj5u.com熱心網友回復:
沒必要這么麻煩,更新前用listView.SuspendLayout()掛起布局,更新完成后用listView.ResumeLayout()恢復布局就可以了uj5u.com熱心網友回復:
雙緩沖 應該是可以的。轉載請註明出處,本文鏈接:https://www.uj5u.com/net/90671.html
標籤:C#
上一篇:這些組件怎么使用?
