如何将Winform添加到WindowsFormsHost

本文关键字:WindowsFormsHost 添加 Winform | 更新日期: 2023-09-27 18:19:48

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

  1. 名称为Form1的winform
  2. wpfForm,名称为MainWindow.xaml

我想做这项工作:如果点击按钮,我会在主窗口中显示Form1,就像MDI

如何将Winform添加到WindowsFormsHost

谢谢你在这种情况下帮助我,你的回答真的帮助了我但我找到了自己的目标:我只是想在wpf窗口中使用windows窗体(form1)(而不是我的windows窗体控件)在我的表单代码中,我只是将form1的继承改为Usercontrol,而不是像这样的form

public partial class Form1: UserControl
{
  /// my code ...
}

因此,我可以在我的windosformshost中使用这个usercontrol,因为我的表单现在是usercontrol(干得好)但我遇到了另一个问题,我的控件没有视觉系统,因此我在msdn中搜索,我从这个链接visual_problem中得到了答案,答案在enable_visual中我的意思是,在winformshot托管我的windows窗体(源于我的用户控制)之前,我应该写下以下代码:

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

谢谢你的评论。致以最良好的问候,霍特琳。

来自MSDN:WindowsFormsHost类

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

若要在Windows窗体控件或窗体中承载WPF元素,请使用ElementHost控件。

若要在WPF元素中承载Windows窗体控件,必须将Windows窗体控件的子属性。

我认为您应该在WPF中处理MDI布局,然后在WPF子窗口中放置WindowsFormsHost控件,创建windows窗体控件后,将其分配为WindowsFormsHost。

有关WPF中的WindowsFormsHost控件,请参阅MSDN文档。文档底部有一个示例,展示了如何使用它将WinForms控件集成到WPF中。您所需要做的就是将MaskedTextBox更改为您的控制:Form1

据我所知,您不可能获得一个完整的WinForm来与WPF进行互操作。您可以通过WindowsFormHost在WPF曲面上放置WinForm控件,但不能通过窗体。

如果您可以将WinForm Form的所有内容打包到WinForm UserControl中,那么您应该能够实现这一点。

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

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

相关文章:
  • 没有找到相关文章