2010-10-12 6 views
1

Я пытаюсь построить довольно сложный интерфейс и минимизировать неиспользуемое пространство.Схема динамического управления

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

Таким образом, это может быть нечто вроде панели с одним родителем, которая содержит 6 дочерних панелей. Один из этих 6 может иметь 2 флажка и текстовое поле. У другого может быть 3 выпадающих списка и т. Д. Во время разработки я не буду знать. Также может случиться так, что мне нужно, чтобы дочерние панели отображались в определенном порядке вместо того, что было бы оптимальным для экономии места.

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

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

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

ответ

0

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

GroupID и SortOrder, оба могут быть простыми int полями.

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

+0

Хорошая точка. Благодарю. – Dan

Смежные вопросы