ПРИМЕЧАНИЕ: Все элементы управления, описанные в этом вопросе, являются DEVEXPRESS элементами управления.Я пытаюсь программно добавить LayoutControlItems
и EmptySpaceItems
к LayoutControlGroup
на DevExpress LayoutControl
.
Требования для моего проекта требуют, чтобы у меня была панель LayoutControlGroup
, которая зависит отнабор элементов фильтра, выбранных из другого элемента управления в макете.Если нет выбранных фильтров, то ни один из `LayoutControlItems не отображается.Если выбран один или несколько фильтров, я добавляю один или несколько элементов управления в группу на основе выбора.
Способ, которым я пытаюсь это сделать, следующий:
1) в конструкторе для LayoutControl
я уже создал LayoutControlGroup
с LayoutControlItem
s.Всего их 6, и каждый LayoutControlItem
содержит PanelControl
, который содержит ListBoxControl
2) Когда форма инициализируется, я скрываю каждый из LayoutControlItems
из LayoutControlGroup
, используя *Метод 1026 *.
3) После того, как пользователь выбирает фильтр или набор фильтров, я запускаю следующий код, пытаясь восстановить элементы управления в группе слева направо.
this.layoutGroupScenarioPortfolios.BeginUpdate();
LayoutControlItem layoutControlToAdd;
LayoutControlItem lastLayoutControlItem = null;
for (int loop = 0; loop < selectedFilters.Length; loop++)
{
layoutControlToAdd = LayoutControlItemFactoryUtil(selectedFilters[loop]);
if (layoutControlToAdd == null)
{
continue;
}
if (loop < 1)
{
layoutControlToAdd.RestoreFromCustomization(this.layoutControlGroupSelectedFilters);
}
else
{
layoutControlToAdd.RestoreFromCustomization(lastLayoutControlItem, DevExpress.XtraLayout.Utils.InsertType.Right);
}
lastLayoutControlItem = layoutControlToAdd;
}
for (int loop = 0; loop < numOfEmptySpaceItemsNeeded; loop++)
{
layoutControlToAdd = new EmptySpaceItem(this.layoutControlGroupSelectedFilters)
{
Owner = this.layoutControlGroupSelectedFilters.Owner
};
layoutControlToAdd.RestoreFromCustomization(lastLayoutControlItem, DevExpress.XtraLayout.Utils.InsertType.Right);
lastLayoutControlItem = layoutControlToAdd;
}
this.layoutControlGroupSelectedFilters.TextVisible = true;
this.layoutGroupScenarioPortfolios.EndUpdate();
Как видно из кода, один цикл добавляет соответствующий ListControlBox
в группу.Второй цикл пытается добавить элементы пустого пространства, чтобы убедиться, что элемент управления списком не занимает всю группу.К концу этого кода должно быть 6 элементов, охватывающих групповой элемент управления, каждый из которых имеет одинаковую ширину в элементе управления.
Проблема в том, что первый добавленный элемент управления занимает половину пространства группового блока, тогда как другой5 элементов в равной степени помещаются в оставшуюся половину группового блока.
В первом цикле метод RestoreFromCustomization()
с одним параметром является правильным методом для использования?