В настоящее время я работаю над программой, которая использует довольно сложную структуру вложенных элементов управления winform, которая динамически изменяется, когда пользователь делает определенные выборы. Более подробное описание конкретного макета элементов управления будет обширным для этого вопроса.
Когда делается выбор, в базовую модель, контролируемую пользовательскими элементами управления, производится множество обновлений. Затем это приводит к ряду соответствующих изменений в размере/позиции/видимости отображаемых элементов управления. Все эти изменения приводят к мучительно интенсивному мерцанию элементов управления на экране. Мне нужно как-то исправить это, так что каждый раз, когда пользователь делает выбор, экран в основном замораживается до тех пор, пока все обновления управления не будут завершены.
Я попытался использовать методы Control.SuspendLayout/Control.ResumeLayout во многих разных местах и способами, и я не могу устранить безумное мерцание. Я думал, что приостановление макета корневого элемента управления во время изменений устранит проблему, но кажется, что этот SuspendLayout не помогает при изменении дочерних элементов управления.
Нужно ли использовать другой подход, а не SuspendLayout? Есть ли способ отлаживать SuspendLayout, чтобы понять, почему он не каскадирует все дочерние элементы управления?