3k 前後の行がたくさんある DataGridView があります。特定の値に応じて、いくつかの行を異なる色 (3 種類の色) で作成する必要があります。すると、2色なら問題なく、3色だと問題が発生します。
1.imgのままスクロールバーが消えて、下にスクロールするとまた出てきます。2 つ目の問題は、DGV をダブルクリックして選択したアイテムの詳細を表示すると、アプリが応答しないことです。2色の場合は問題ありません。
これは1.imgです
これは 2 色の画像です。スクロール バーが所定の位置にあり、ダブルクリックしても「応答していません」というメッセージは表示されません
。
private void CheckQuantity(DataGridViewRow dr)
{
var art = dr.DataBoundItem as DeArt;
if (art != null)
dr.DefaultCellStyle.BackColor = art.QuantityMin > art.QuantityRemaining ? Color.LightSalmon : Color.Empty;
}
private void CheckPVA(DataGridViewRow dr)
{
var art = dr.DataBoundItem as DeArt;
foreach (DeArtPVA v in PVAprice)
{
if (dr.DefaultCellStyle.BackColor == Color.LightSalmon && v.IdArt == art.Id)
{
dr.DefaultCellStyle.BackColor = Color.FromArgb(255, 120, 10);
break;
}
if (v.IdArt == art.Id)
dr.DefaultCellStyle.BackColor = Color.Yellow;
}
}
protected override void DGVWarehouse_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
if (e.ColumnIndex == 0)
{
CheckQuantity(dgrDataGridView.Rows[e.RowIndex]);
CheckPVA(dgrDataGridView.Rows[e.RowIndex]);
}
}
理由はありますか?