Как динамически встроить подчиненную форму winform в элемент управления вкладкой основной winform? - PullRequest
4 голосов
/ 19 мая 2011

Есть ли способ, которым я могу передать объект формы Winforms главной форме, содержащей элемент управления вкладками, и заставить основную форму загрузить этот объект формы в одну из вкладок?

Дополнительная складка: объект формы будет создан из потока, отличного от основной формы.

Ответы [ 3 ]

4 голосов
/ 19 мая 2011

Я не думаю, что это будет работать, когда формы создаются в разных потоках, но вы обычно делаете это, устанавливая для свойства TopLevel формы значение False, а затем добавляя его в элемент управления вкладки (или любой другой родительский элемент управления).

Редактировать: Вам также необходимо установить для свойства Visible значение True, поскольку формы по умолчанию скрыты.

Кроме того, я только что попробовал это, и это работает для чего-то вроде кнопки, созданной из другогонить.Но когда я сделал это с формой, я получил InvalidOperationException.

3 голосов
/ 19 мая 2011
2 голосов
/ 19 мая 2011

Вы можете просто позвонить Add из коллекции Controls на TabPage.Возможно, вы захотите установить свойства Anchor и Dock соответственно, чтобы элемент управления заполнил всю поверхность (при условии, что это именно то, что вам нужно).

Я не думаю, что создание элемента управления из другого потокахороший маршрут, хотяЯ уверен, что вы вполне способны сделать эту руку поточно-ориентированной, используя соответствующие механизмы синхронизации и все такое.Но все элементы пользовательского интерфейса имеют привязку к потоку, что означает, что, как только этот элемент пользовательского интерфейса создан, он принадлежит потоку создания.У вас могут не возникнуть проблемы с простым созданием (просто вызов конструктора), но я придерживаюсь правила буквальной и строгой логики all элементов пользовательского интерфейса в потоке пользовательского интерфейса.

...