DataGridView 在加载内容和样式 C# 时冻结

DataGridView freezes when loading content and style C#

我的表单在一个选项卡控件的不同选项卡中有 6 个 dataGridViews,用户可以输入值并更改单元格背景色,使用保存按钮,每个 dataGridView 的值都保存到一个文本文件中,与每个 dataGridView 中单元格的背景颜色。当用户重新打开表单时,所有最后的设置(样式和值)都会再次加载到 6 个 dataGridView;问题是,当用户重新打开表单时,dataGridViews 冻结,我找不到解决该问题的方法。有人可以帮助我吗?

我的加载数据和样式代码:

 foreach (string s in File.ReadAllLines(stylePath))
        {
            string[] items = s.Split(';');
            if (items.Length == 3)
            {
                dataGridView1.Rows[Convert.ToInt32(items[0])]
                   .Cells[Convert.ToInt32(items[1])]
                   .Style.BackColor = Color.FromName(Convert.ToString(items[2]));
            }
        }
 StreamReader sr = new StreamReader(valuePath);
        foreach (DataGridViewRow row in dataGridView1.Rows)
        {
            foreach (DataGridViewCell cell in row.Cells)
            {
                cell.Value = sr.ReadLine();
            }
        }
        sr.Close();

这是重新打开表单时的样子:

尝试:

using(StreamReader sr = new StreamReader(stylePath))
{
   string line;
   string[] items;
   int row, cell;
   Color color;

   while(!sr.EndOfStream)
   {
      line = sr.ReadLine();
      items = line.Split(';');
      if(items.Length<3) continue; //something wrong in the file

      row = Convert.ToInt32(items[0]);
      cell = Convert.ToInt32(items[1]);

      if(String.IsNullOrEmpty(item[2])) continue; // No change is needed
      color = Color.FromName(items[2]);

      dataGridView1.Rows[row].Cells[cell].Style.BackColor = color;
   }
}