找了很久才弄好的 記錄一個解決方案
/// <summary> /// 刷新頁面數據 /// </summary> void ResetViewData() { this.Invoke((Action)(() => { for (int i = 0; i < uiDataGridView1.RowCount; i++) { uiDataGridView1.InvalidateRow(i); } })); } /// <summary> /// 刷新頁面數據 /// </summary> void ResetViewData(EquipmentComEntity comEntity) { this.Invoke((Action)(() => { for (int i = 0; i < uiDataGridView1.RowCount; i++) { if (((EquipmentComEntity)uiDataGridView1.Rows[i].DataBoundItem)== comEntity) { uiDataGridView1.InvalidateRow(i); } } })); }
主要代碼就是
uiDataGridView1.InvalidateRow(i);
其中文翻譯為
// // 摘要: // 使 System.Windows.Forms.DataGridView 中的指定行無效,並強制對它進行重新繪制。 // // 參數: // rowIndex: // 要使其無效的行的索引。 // // 異常: // T:System.ArgumentOutOfRangeException: // rowIndex 不在 0 到行數減 1 的有效范圍內。 public void InvalidateRow(int rowIndex);
這個辦法是目前最好的解決方案