У меня есть DataGridView с большим количеством строк около 3k. Мне нужно сделать несколько строк разных цветов (3 типа цветов) в зависимости от конкретного значения. Когда я это делаю, нет проблем с 2 типами цветов, проблемы начинаются, если есть 3 цвета.
Полоса прокрутки исчезает, как и в 1.img, когда я прокручиваю вниз, она снова появляется. Вторая проблема заключается в том, что когда я дважды щелкаю DGV, чтобы просмотреть сведения о выбранном элементе, приложение не отвечает. Ни одна из проблем не возникает, когда есть 2 цвета.
Это 1.img
Это изображение с двумя цветами, как вы можете видеть, полоса прокрутки находится на своем месте, и когда я дважды щелкаю, нет «не отвечает» Вот код, с которым я работаю:
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]);
}
}
Любые идеи, почему?