2010-02-19 3 views
6

Есть ли способ разместить/отобразить полную форму WinForms (а не только один элемент управления) в каком-то типе управления контейнером или оболочкой в ​​форме WPF? Я ищу что-то подобное в концепции для виртуального include из php или iframe в html. Возможно, скомпилировав его в OCX или DLL.Можно ли разместить форму WinForm в форме WPF через контейнер/упаковщик?

ответ

6

Насколько я знаю, вы не можете разместить в WPF реальную форму WinForms.

Однако хорошей альтернативой является создание обычного UserControl в WinForms (в качестве проекта библиотеки управления Windows Forms), который содержит все необходимые функциональные возможности и дочерние элементы управления.

Затем в вашем проекте WPF ссылайтесь на файл WindowsFormsIntegration.dll (должен быть на вкладке .NET в Add References).

Затем также ссылайтесь на сборку, содержащую WinForms UserControl, и, наконец, добавьте контейнер Xbox в контейнер WindowsFormsHost.

Для получения дополнительной информации см. Это useful tutorial от Sacha Barber.

1

Существует статья о CodeProject, в которой показано, как разместить exe как элемент управления в WinForms (это приложение, которое использует страницы вкладок, перетаскивает на него Winform.exe, создает в нем вкладку с этим окном) , полученный из этой статьи here. Я знаю, что вы попросили специально WPF, но, возможно, это может привести вас в правильном направлении?

Надеюсь, это поможет, С уважением, Tom.

+0

Не в конечном итоге происходит с этим, но это удивительный инструмент. Спасибо за ссылку. – jasonk

16

вы можете сделать это с помощью следующего кода:

В вашем XAML:

<WindowsFormsHost name="wfHost" /> 

В ваш код-за:

Form foo = new Form(); 
foo.TopLevel = false; 
foo.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; 
wfHost.Child = foo; 
+1

+1, малоизвестный 'TopLevel'. Используется для этого в * .NET Compact 1.1 * для дублирования функций «подформы», таких как * Microsoft Access *. – AMissico

 Смежные вопросы

  • Нет связанных вопросов^_^