わかりましたので、バックグラウンド スレッドで DataGridView を BindingSource にバインドしていますが、「しばらくお待ちください」というモデル ウィンドウがユーザーを楽しませています。問題ない。
ただし、行の databounditem タイプに基づいて、行の背景色の一部を変更する必要があります。このような:
for (int i = 0; i < dgItemMaster.Rows.Count; i++)
{
if (dgItemMaster.Rows[i].DataBoundItem.GetType().Name == "Package")
{
dgItemMaster.Rows[i].DefaultCellStyle.BackColor = Color.PowderBlue;
}
}
プログラムでこれを行うことができますが、行の反復中に 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;
}
}
}));
}