Как программно переместить элемент управления на другую вкладку в С#?

У меня есть TabControl, который содержит несколько вкладок. каждая вкладка включает Word component control, который загружает Microsoft office word. Каждый раз, когда пользователь открывает новую вкладку, к ней необходимо добавить новый Word component control, что занимает немного времени. Есть ли способ программно переместить текущую Word component control на новую вкладку при добавлении новых вкладок, чтобы не создавать новый класс компонентов?

Примерно так (Но у Tabs[1] нет Controls)

stcWordTab.Tabs[1].Controls.Add(stcWordTab.Tabs[0].Controls[0])

ИЗМЕНИТЬ

Я использую элемент управления SuperTabItem DotNetBar.


person Alex Jolig    schedule 18.12.2014    source источник
comment
Вы понимаете, что когда вы его переместите, он уже не будет там, где был раньше?!   -  person TaW    schedule 18.12.2014
comment
@TaW Да! это именно то, что я планирую сделать   -  person Alex Jolig    schedule 19.12.2014
comment
Я не знаю о SuperTabItem DotNetBar. - В winforms я бы посоветовал: всегда различайте Tab Control и его TabPages! Если элемент управления, скажем, Button button1 находится на tabPage1, вы можете переместить его на tabPage2 следующим образом: button1.Parent = tabpage2; Не уверен, что ваша библиотека работает так же!   -  person TaW    schedule 20.12.2014


Ответы (1)


Хотя у самого Tab нет свойства Controls, у него есть свойство TabItem.AttachedControl, которое TabControlPanel связано с вкладкой, и на этой панели размещаются ваши элементы управления.

Таким образом, ваш код может выглядеть

(stcWordTab.Tabs[1].AttachedControl as TabControlPanel).Controls
    .Add((stcWordTab.Tabs[0].AttachedControl as TabControlPanel).Controls[0]);

Для справки см. базу знаний.

person Andy Korneyev    schedule 18.12.2014
comment
Он каким-то образом полностью удаляет первую вкладку, а также удаляет компонент слова! - person Alex Jolig; 20.12.2014
comment
Хм... У меня сейчас нет установленных компонентов dotnetbar, поэтому я не могу это проверить, но вот несколько советов: попробуйте удалить элементы управления из Tabs[0].AttachedControl, прежде чем добавлять их в Tabs[1].AttachedControl. И, возможно, вам следует вызвать метод RecalcLayout tabcontrol после перемещения элементов управления с вкладки на вкладку. - person Andy Korneyev; 22.12.2014