В настоящее время я пишу пользовательский элемент управления, который должен содержать дочерний элемент управления и поддерживать прокрутку и авторизацию.
Автопрокрутка невозможна, потому что мой элемент управления полностью самокрашен, и прокручивать должна только его часть.
Теперь перерисовка элементов управления очень медленная, особенно с текстовыми полями и кнопками с системным окрашиванием. Помогает деактивация системного окрашивания (TextBox.BorderStyle = Borderstyle.Fixed
), но элемент управления также должен это поддерживать. Использование SetRedraw
и последующее обновление элементов управления не помогает, потому что текстовое поле systemdraw игнорируется, а текстовое поле выглядит безобразно. Обновление всего элемента управления или использование `RedrawWindow
снова замедляет рисование.
Я также уже пытался приостановить макет элемента управления и дочерних элементов управления безуспешно.
Кто-нибудь знает, как ускорить рисование дочернего элемента управления, как AutoScrolling.
Мой CustomControl имеет стиль ControlStyles.AllPaintingInWmPaint | ControlStyles.SupportsTransparentBackColor | ControlStyles.OptimizedDoubleBuffer
.
Граница ChildControl изменяется при изменении размера (MyControl) и (ScrollBar) OnValueChanged.
Использование таймера немного помогает, но я не знаю, действительно ли это правильное решение.
РЕДАКТИРОВАТЬ:
Я обнаружил проблему, после реактивации SetRedraw
и Refresh
, OnPaint
срабатывает 38 раз с 37 Controls. Есть ли обходной путь?