Итак, я привязываю DataGridView к BindingSource в фоновом потоке, в то время как небольшое окно «Please Wait» хранит пользователя. Нет проблем.Изменение свойств DataGridViewRow в другом потоке
Однако мне нужно изменить некоторые цвета фона строк, основываясь на типе базы данных строки. Как это:
for (int i = 0; i < dgItemMaster.Rows.Count; i++)
{
if (dgItemMaster.Rows[i].DataBoundItem.GetType().Name == "Package")
{
dgItemMaster.Rows[i].DefaultCellStyle.BackColor = Color.PowderBlue;
}
}
Programatically я могу это сделать, но это достаточно строк, что он будет запирать GUI, пока он переборе строк. Я ищу идеи о том, как лучше всего справиться с ситуацией.
Это то, что я делаю сейчас:
void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
dgItemMaster.DataSource = products;
dgItemMaster.BeginInvoke((Action)(() =>
{
for (int i = 0; i < dgItemMaster.Rows.Count; i++)
{
if (dgItemMaster.Rows[i].DataBoundItem.GetType().Name == "Package")
{
dgItemMaster.Rows[i].DefaultCellStyle.BackColor = Color.PowderBlue;
}
else if (dgItemMaster.Rows[i].DataBoundItem.GetType().Name == "PackageKit")
{
dgItemMaster.Rows[i].DefaultCellStyle.BackColor = Color.Pink;
}
}
}));
}
ОК, это гораздо яснее с этой дополнительной информации. – Alan 2008-11-03 20:48:07