I have an unbound datagridview view. The first load always runs very fast but the second load is about 20 times slower.
I do the following everytime and if I remove this code the second and subsequent loads are fast (unfortunately I must keep this color logic):
for (int ri = 0; ri < pdgv.Rows.Count; ri++)
{
for (int ci = 0; ci < pdgv.Columns.Count; ci++)
{
if (pdgv.Columns[ci].Frozen)
{
pdgv[ci, ri].Style.BackColor = v.Frozen_BackColor;
pdgv[ci, ri].Style.ForeColor = v.Frozen_ForeColor;
pdgv[ci, ri].Style.Font = v.Frozen_Font;
if (pdgv[ci, ri].OwningColumn.Name.StartsWith("yn_") &&
pdgv[ci, ri].Value != null &&
pdgv[ci, ri].Value.ToString() == "1")
{
pdgv[ci, ri].Style.BackColor = Color.Red;
pdgv[ci, ri].Style.ForeColor = Color.White;
}
}
if (pdgv.Columns[ci].ReadOnly)
{
pdgv[ci, ri].Style.BackColor = v.ReadOnly_BackColor;
pdgv[ci, ri].Style.ForeColor = v.ReadOnly_ForeColor;
pdgv[ci, ri].Style.Font = v.ReadOnly_Font;
}
}
}
I dispose and rebuild the datagridview before loading the second time and it is as fast as the first load.