#c# #winforms #oop #label #flowlayout
#c# #winforms #ооп #метка #flowlayout
Вопрос:
Я новичок в c #, мне было интересно, почему, если я пытаюсь добавить один и тот же объект в другую панель FlowLayoutPanel, он отображается только на последней панели.
Пример:
Label noElementsTitleLabel = LabelFactory.getLabel("No elements");
private void loadLabelsInPanel(FlowLayoutPanel panel, Label title, Label[] labelArray)
{
panel.Controls.Add(title);
if (labelArray.Length == 0)
{
panel.Controls.Add(noElementsTitleLabel);
return;
}
panel.Controls.AddRange(labelArray);
}
Если я вызываю loadLabelsInPanel
три раза, предоставляя три разные панели макета, и labelArray
всегда пусто, я вижу noElementsTitleLabel
только на третьей панели
Комментарии:
1.
noElementsTitleLabel
это элемент управления, у него может быть только один родительский элемент. Вероятно, с этим было бы по-другомуpanel.Controls.Add(LabelFactory.getLabel("No elements"));
. Это предполагаетLabelFactory
, что каждый раз возвращается новый объект.2. Элемент управления имеет четыре свойства 1) Слева 2) Сверху 3) Ширина 4) Высота Вы не устанавливаете эти свойства, поэтому они используются по умолчанию, и две панели расположены в одном и том же месте.
3. Хорошо, спасибо @Jimi, я забыл, что Label был элементом управления!