Хорошо, поэтому я связываю DataGridView с BindingSource в фоновом потоке, в то время как небольшое окно модели «Пожалуйста, подождите» развлекает пользователя. Нет проблем.
Однако мне нужно изменить некоторые цвета фона строк в зависимости от типа элемента данных строки. Как это:
for (int i = 0; i < dgItemMaster.Rows.Count; i++)
{
if (dgItemMaster.Rows[i].DataBoundItem.GetType().Name == "Package")
{
dgItemMaster.Rows[i].DefaultCellStyle.BackColor = Color.PowderBlue;
}
}
Программно я могу это сделать, но достаточно строк, чтобы заблокировать графический интерфейс во время итерации строк. Я ищу идеи о том, как лучше всего справиться с ситуацией.
Вот что я делаю сейчас:
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;
}
}
}));
}