У меня есть приложение, которое показывает данные (фондовый рынок) в пользовательском элементе управления, сделанном мной. В моем приложении может быть несколько пользовательских элементов управления на одном экране для анализа нескольких акций.
Учитывая эту функциональность, пользователь может перейти от одного элемента управления к нескольким элементам управления на экране.
Эта функциональность давала мерцающую проблему. Чтобы решить проблему мерцания, я использовал двойную буферизацию, которая была включена с помощью кода ниже -
protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
cp.ExStyle |= 0x02000000; // Turn on WS_EX_COMPOSITED
return cp;
}
}
Данный код определенно помог устранить проблему мерцания. Но создал еще одну проблему, которая -
Иногда это дает черное окно в этом пользовательском элементе управления. Все, что я нашел идеальным в потоке кода, но не смог выяснить причину этого черного окна.
Удаление двойной буферизации дает правильный выходной сигнал, но снова появляется мерцание.
Вот изображение для лучшего понимания вопроса -