У меня есть пользовательский элемент управления, на котором есть другие элементы управления. Когда пользователь нажимает на него, я рекурсивно просматриваю все элементы управления и меняю цвет фона на синий. Тем не менее, я получаю серьезную проблему мерцания, поскольку элементы управления меняют цвет по отдельности. У меня включена двойная буферизация, но я сомневаюсь, что она оптимизирует мой рисунок. У меня есть подозрение, что это не самый лучший способ добиться такого эффекта.
Как мне избавиться от этого мерцания? Или есть лучший способ сделать это?
Мой звонок OnClick:
ControlUtils.SetColorRecursive(this, Color.LightSteelBlue);
SetColorRecursive:
tCtl.SuspendLayout();
if (tCtl != null)
{
// Set Color
tCtl.BackColor = tColor;
foreach (Control tSubCtl in tCtl.Controls)
{
// Ignore the following
if (tSubCtl is TextBox) continue;
if (tSubCtl is ListBox) continue;
if (tSubCtl is NumericUpDown) continue;
// Recursively change sub-controls
SetColorRecursive(tSubCtl, tColor);
}
}
tCtl.ResumeLayout();