У меня есть список объектов UserControl; когда пункт меню нажать, чтобы перейти в другой раздел приложения он делает следующее:Как нарисовать элемент управления без рисования управления
- Установите Отображаемое UserControl в видимую
- Очистить список управления главной панели в
- Нового вверх запрашиваемое управление (если уже не создается в списке)
- Добавить новый элемент управления для управления списком основных панелей
- Dock новый элемент управления для заполнения
- Установите новый элемент управления для видимого
Я сделал это, потому что ранее все области приложения не были пользовательскими элементами управления, и они были всего лишь наборами элементов управления в TabControl. Основной код был чудовищным (код в frmMain был 13000+ строк).
Он хорошо работает. Все элементы управления (какими бы каждая закладка была раньше) управляли своим поведением, каждый элемент управления имеет небольшой размер кода. У меня может быть сексуальное меню. Все хорошие вещи.
Однако, очевидно, что есть проблема. Раньше tabcontrol загружался при запуске, и все вкладки отображали (но не видели). На одной странице табуляции, в частности, есть элемент управления планированием, и для рисования и настройки макета требуется 3-4 секунды. Теперь, когда элементы управления загружаются и отображаются по мере необходимости, при первом просмотре этого конкретного элемента управления вы видите его загрузку и настройку его размера/форматирования/и т. Д. Это вряд ли эстетично.
Вопрос в том, как я могу загрузить и отобразить этот элемент управления так, чтобы он отображал и определял его макет, но без него фактически показывал пользователя?
Я пробовал простые вещи, как:
ScheduleWindow scheduler = new ScheduleWindow() { Visible = false; }
mainPanel.Controls.Add(scheduler);
scheduler.Visible = true;
Я попытался создать и загрузить элемент управления на своем собственном потоке (с многочисленными трудностями), и он до сих пор ничего не делать ...
Есть ли способ достичь того, что я ищу?
Молодцы. Спасибо! –