Ограничение дочернего элемента Groupbox? - PullRequest
0 голосов
/ 24 декабря 2018

Я динамически создаю и добавляю элементы управления в GroupBox.GroupBox содержит одну панель (родительскую панель), которая заполняет GroupBox.В этой родительской панели у меня есть несколько дочерних панелей.Все выглядит и работает, как и ожидалось, пока я не добавлю 108 дочерних панелей в родительскую панель.При добавлении этого количества (или более) дочерних панелей каждая из дочерних панелей внезапно становится некрасивой (вокруг некоторых дочерних панелей появляются случайные черные границы, при прокрутке вниз отображаются черные «пятна» повсюду).Я даже вижу, что мой рабочий стол Windows внезапно начинает показываться на нем !!!Существует ли ограничение на количество панелей / элементов управления, которые можно добавить в групповой ящик?

Моя спецификация - windows 10 Pro, visual studio 2017, .NET 4.7, 16-гигабайтная оперативная память.Я перепробовал все виды перестановок (предположил, что 108-я запись была повреждена и пропустил ее, попытался добавить дочерние панели в обратном порядке).Кажется, это не то, что добавляется на панель, а количество элементов.Когда я разделяю дочерние панели на 2 группы, все работает нормально.Но я хочу, чтобы один групповой ящик имел все данные.

Ответы [ 2 ]

0 голосов
/ 03 января 2019

Оказывается, что родительская панель была пользовательской панелью, которая имела собственный способ рендеринга дочерних элементов управления.Он пытался автоматически рассчитать высоту панели странным образом, отсюда и странный результат.Однако я обнаружил еще одну проблему, связанную с панелями, которую я опубликую

0 голосов
/ 25 декабря 2018

Да, есть ограничение, ограничение для всего сеанса приложения.каждый элемент управления равен GDI Object, ограничение очень велико, и если вы передадите его, что-то не так с архитектурой вашего приложения, и будет выдано исключение.вместо controls используйте класс System.Drawing.Graphics , когда вы можете в порядке сохранить ресурсы.

из MSDN ( GDI Objects ):

Существует теоретический предел в 65 536 дескрипторов GDI на сеанс.Однако максимальное количество дескрипторов GDI, которое можно открыть за сеанс, обычно меньше, поскольку на него влияет доступная память.

Обратите внимание, что вы можете проверить, сколько объектов GDI вы создаете с помощью диспетчера задач WindowsДобавьте следующие столбцы: enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...