解決DataGridView在多線程中無法顯示滾動條的問題


在多線程中對DataGridView指定 DataSource 來填充數據,更新數據的時候,會導致DataGridView出現假死,顯示錯誤或者滾動條無法顯示的問題,在保證了DataGridView的ScrollBars設置為了Both,數據量大於DataGridView顯示的的范圍,而且沒有凍結列的情況下,解決方法如下:

一是使用 Invoke 將執行數據綁定的代碼交回給主線程(因為 DataGridView 是主線程創建的);

二是在指定 DataSource 之前,將其置為 null。

private delegate void InvokeHandler();
//子線程中
this.Invoke(new InvokeHandler(delegate()
{
dataGridView1.DataSource = null;
dataGridView1.DataSource = dgv_dt;
}));


忽略子線程操作主線程創建的對象只要加一句:Control.CheckForIllegalCrossThreadCalls = false;但不可在多線程中隨便使用。

 



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM