Я создаю приложение для панели мониторинга, которое отображает сотни «элементов» на FlowLayoutPanel
.
Каждый «элемент» представляет собой UserControl
, который состоит из 12 текстовых полей или меток.
Мое приложение запрашивает базу данных, а затем создает экземпляр "item" для каждой записи, заполняя метки и текстовые поля данными, прежде чем добавить их в FlowLayoutPanel
.
После добавления около 560 элементов на панель я заметил, что число USER Objects
в моем диспетчере задач возросло до 7300, что намного больше, чем у любого другого приложения на моей машине.
Я полагал, что 560 * 13 (12 ярлыков плюс сам UserControl) - это 7280. Так что внезапно выяснилось, откуда все объекты ...
Зная, что до того, как окна выбрасывают полотенце, существует ограничение в 10000 ПОЛЬЗОВАТЕЛЕЙ, я пытаюсь найти более эффективные способы нанесения этих "предметов" на FlowLayoutPanel
.
Мои идеи на данный момент таковы:
Нарисуйте «элемент», используя graphics.DrawText
и DrawImage
вместо многих меток. Я надеюсь, что это будет означать 1 элемент = 1 USER Object
, а не 13.
Имейте 1 экземпляр «элемента», затем для каждой записи заполняйте экземпляр и используйте метод Control.DrawToBitmap()
, чтобы получить изображение, а затем используйте его в FlowLayoutPanel
(или аналогичном)
Итак ... У кого-нибудь есть другие предложения ???
P.S. Это масштабируемый интерфейс, поэтому я уже исключил «пейджинг», так как есть требование видеть все элементы одновременно