Я создаю пользовательский элемент управления с собственным набором заголовков.
Заголовки (другой пользовательский элемент управления) существуют как дочерний элемент управления вышеупомянутого пользовательского элемента управления.
Когда я изменяю размер заголовков (часть дочернего элемента управления), дочерний контроллер вызывает для себя функцию Invalidate (), которая должна поставить в очередь сообщение для перерисовки.
После того, как дочерний контроллер был признан недействительным, родительский элемент управления получает уведомление о том, что размер заголовка изменился, и выдает собственную команду Invalidate ().
Это показано этим следом:
Headers.Invalidate ()
List.Invalidate ()
Headers.Invalidate ()
List.Invalidate ()
Однако, когда приходит время начать перерисовку, родительский элемент управления сначала получает событие Paint, а затем элемент управления заголовком:
List.Paint
Заголовки. Раскраска
Когда я быстро перемещаю мышь, события перемещения мыши оказываются в очереди перед событиями рисования, поэтому недействительные продолжают вызываться, но события рисования родительского элемента управления всегда запускаются первыми:
List.Paint
List.Paint
List.Paint
List.Paint
Headers.Paint
List.Paint
List.Paint
Заголовки. Раскраска
Это заставляет элемент управления заголовка существенно отставать от списка. В идеале оба события рисования должны запускаться вместе, и все события перемещения мыши ставятся в очередь перед событиями рисования (так что рисование всегда синхронизировано, но все события мыши сбрасываются между красками.)
Понятия не имею, с чего начать исправление этой проблемы.
С чего начать, чтобы исправить отставание, которое испытывает мой заголовок?