一般來說只有創建控件的線程才能訪問控件,否則會造成死鎖、資源競爭、掛起或暫停的問題,跨線程訪問 UI 控件應採用 thread-safe 的方式,微軟介紹了兩種方式:如何對控件進行線程安全調用 (Windows Forms .NET)。
**DataGridView 滾動時的閃爍 (flicker)** 問題:如何在水平滾動時防止 DataGridView 閃爍?- Stack Overflow。
DataGridView 頻繁使用 Refresh () 會導致右側滾動條變成黑色不可用狀態,這時就不能依靠 Refresh () 來重繪控件,可以通過重新綁定 DataSource:
// 使用 thread-safe 的方式跨線程訪問 UI 控件
dataGridView1.Invoke(() =>
{
dataGridView1.DataSource = null;
dataGridView1.DataSource = _dataTable;
});