Ну, , если вы амбициозны и хотите выйти на конечности , Я делаю это так .
По сути, я пишу то, что похоже на функцию C #, для создания элементов управления, которые мне нужны в любой момент времени.
Я говорю «похоже», потому что он использует специальную управляющую структуру, называемую Дифференциальное выполнение, которая позволяет вызывать ее в разных режимах.
В режиме Show он делает именно это - создает и размещает элементы управления.
В режиме стирания он делает противоположное, удаляя элементы управления, которые он там поместил ранее.
В режиме обновления он делает все, что нужно для постепенного изменения набора элементов управления от того, что было до того, что нужно.
В режиме «Событие» он обрабатывает входные события пользовательского интерфейса, направляя их на соответствующий элемент управления и делая то, что вы хотите.
Почему?
Вам никогда не придется писать обработчик событий. Вам никогда не нужно создавать переменную для хранения элемента управления или создавать идентификатор элемента управления.
Нет ограничений на количество элементов управления, которые могут быть на экране, потому что, когда элементы управления не видны, они не занимают память. (И это автоматически, и тривиально, мусор собирает элементы управления.)
Процедура для рисования того, что вы хотите, способ легче написать, чем та, которая рисует, стирает, постепенно обновляет и обрабатывает события.
Кроме того, он обрабатывает условные выражения, подпрограммы, циклы и т. Д., Позволяя вам по-настоящему выразить то, что вы рисуете в окне, он живет в вашем коде и имеет доступ к вашей структуре данных, а также автоматически обрабатывает все виды привязки данных без необходимости кодирования.
Наш продукт имеет лот пользовательского интерфейса с миллионом опций. Я не мог сделать это по-другому.