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;
}
}
我的表单在一个选项卡控件的不同选项卡中有 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;
}
}