Почему мой элемент управления не копируется (или, по крайней мере, не отображается)?

Я пытаюсь клонировать FlowLayoutPanel (включая, конечно, все на нем — несколько разных элементов управления) и вставлять его на TabPage. tabPageRow0 (элемент управления TabPage) имеет FlowLayoutPanle с именем «panelRow0». Я хочу скопировать его и поместить на другую вкладку. Тем не менее, шагая по коду:

private void buttonShowMockupOfAllRows_Click(object sender, EventArgs e)
{
    Control tabpageCtrl = this.tabControl1.Controls["tabPageRow0"];
    TabPage tp = tabpageCtrl as TabPage;
    FlowLayoutPanel flp0 = tp.Controls["panelRow0"] as FlowLayoutPanel;

    tabControl1.SelectedTab = tabPageUniMockup;
    TabPage tpMockup = tabControl1.SelectedTab;
    tpMockup.Controls.Add(flp0);
}

... хотя ни один из объектов не является нулевым, панель FlowLayoutPanel не отображается на вкладке TabPage. Почему нет?

ОБНОВИТЬ

Элемент управления (FlowLayoutPanel) добавляется, по-видимому, потому что я изменил код следующим образом:

. . .
MessageBox.Show(tpMockup.Controls.Count.ToString());
tpMockup.Controls.Add(flp0);
MessageBox.Show(tpMockup.Controls.Count.ToString());

...и я вижу сначала "1", потом "2" - но почему он такой застенчивый и уединенный?

ОБНОВЛЕНИЕ 2

Что еще более странно (слово «страннее»? Если это не так, то оно еще более странное), так это то, что после запуска этого кода панель FlowLayoutPanel исчезла из своего исходного местоположения. Как это могло быть/почему?

ОБНОВЛЕНИЕ 3

Я не знаю ответа на свой вопрос, поэтому я не публикую это как ответ, но это решение моей проблемы (IOW, меня больше не волнует мой вопрос):

private void buttonShowMockupOfAllRows_Click(object sender, EventArgs e)
{
    Control tabpageCtrl = this.tabControl1.Controls["tabPageRow0"];
    TabPage tp = tabpageCtrl as TabPage;
    FlowLayoutPanel flp0 = tp.Controls["panelRow0"] as FlowLayoutPanel;

    tabControl1.SelectedTab = tabPageUniMockup;
    Image img = PanelToBitmap(flp0);
    pictureBox1.Image = img;
}

// From http://stackoverflow.com/questions/3181886/how-to-get-a-windows-forms-panel-as-a-bitmap-with-c
private static Image PanelToBitmap(Control pnl)
{
    var bmp = new Bitmap(pnl.Width, pnl.Height);
    pnl.DrawToBitmap(bmp, new Rectangle(0, 0, bmp.Width, bmp.Height));
    return bmp;
}

Это работает — поскольку это макет, мне не нужны элементы управления, мне просто нужно посмотреть, как они выглядят, и это помогает.


person B. Clay Shannon    schedule 02.06.2014    source источник
comment
Я не вижу кода клонирования в вашем образце... (ни одного new XXXX). Вы уверены, что разместили правильный код?   -  person Alexei Levenkov    schedule 02.06.2014
comment
Возможно, моя терминология ошибочна или неудобна — я хочу, так сказать, скопировать и вставить.   -  person B. Clay Shannon    schedule 02.06.2014
comment
Вероятно, вам следует изменить клонирование на копирование кода или что-то в этом роде... Примечание: добавление контроля к 2 разным дочерним коллекциям во время выполнения не вызовет ничего, кроме проблем.   -  person Alexei Levenkov    schedule 02.06.2014
comment
Я думаю, вы правы в этом (см. Обновление 2)   -  person B. Clay Shannon    schedule 02.06.2014