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