如何将Winform添加到WindowsFormsHost

时间:2012-01-06 16:07:00

标签: c# wpf integration mdi windowsformshost

我的主要项目是在WPF下,在我的解决方案中我有:

  1. winform名称为Form1
  2. wpfForm,其名称为MainWindow.xaml
  3. 我想做这个工作:如果点击按钮,我会在MainWindow中显示Form1与 MDI

    完全相同

6 个答案:

答案 0 :(得分:2)

感谢您在这种情况下帮助我,您的答案真的对我有帮助 但我发现了我的目标: 我只是想使用Windows窗体(form1)到wpf windows(而不是我的窗体控件) 在我的表单代码中,我只是将form1的继承更改为Usercontrol而不是像这样的

public partial class Form1: UserControl
{
  /// my code ...
}
因此,我可以在我的windosformshost中使用此usercontrol,因为我的表单现在是usercontrol(很好的工作) 但我有另一个问题,我的控件没有视觉效果,因为我在msdn中搜索,我从这个链接visual_Problem 得到答案,答案在enable_visual 我的意思是,在winformshot主机我的Windows窗体之前(ofcource我的usercontrol)我应该写这段代码:

System.Windows.Forms.Application.EnableVisualStyles();

感谢您的评论。 最诚挚的问候,Hothreeyn。

答案 1 :(得分:1)

来自MSDN的

WindowsFormsHost Class

  

使用WindowsFormsHost元素放置Windows窗体控件   在您的WPF元素或页面中。

     

要在Windows窗体控件或窗体中托管WPF元素,请使用   ElementHost控件。

     

要在WPF元素中托管Windows窗体控件,必须分配   Windows窗体控件到子属性。

我认为您应该在WPF中处理MDI布局,然后在WPF子窗口中放置WindowsFormsHost控件,一旦创建了Windows窗体控件,就将其指定为WindowsFormsHost的子窗口。

答案 2 :(得分:0)

请参阅MSDN Documentation以了解WPF中的WindowsFormsHost控件。文档底部有一个示例,说明如何将WinForms控件集成到WPF中。您需要做的只是将MaskedTextBox更改为您的控件:Form1

答案 3 :(得分:0)

据我所知,你无法让整个WinForm与WPF互操作。您可以通过WindowsFormHost将WinForm控件放在WPF表面上,但不能放置表单。

如果您可以将WinForm表单的所有内容打包到WinForm UserControl中,那么应该可以将其解除。

答案 4 :(得分:0)

使用WindowsFormHost控件,可以在WPF中使用Windows窗体控件。 你可以参考这个link

答案 5 :(得分:0)

WPF没有对MDI的本机支持,你可以使用这个wpfmdi.codeplex.com或更复杂的这个chronoswpf.codeplex.com