如何将 Winform 添加到 WindowsFormsHost

发布于 2024-12-25 10:39:00 字数 196 浏览 1 评论 0原文

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

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

我想完成这项工作:如果单击按钮,我会在 MainWindow 中显示 Form1 ,与 MDI 完全相同强>

My Main Project Is Under WPF, In My Solution I have:

  1. winform which name is Form1
  2. wpfForm which name is MainWindow.xaml

I want to do this job: if button clicked, I show the Form1 in MainWindow Exactly Like MDI

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

沉默的熊 2025-01-01 10:39:00

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

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

,因此我可以在我的 Windosformshost 中使用此用户控件,因为我的表单现在是用户控件(干得好)
但我遇到了另一个问题,我的控件没有视觉风格,因此我在 msdn 中搜索,我从此链接得到了答案 visual_Problem 答案在 enable_visual
我的意思是,在 winformshot 托管我的 Windows 表单(来源是我的用户控件)之前,我应该编写以下代码:

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

感谢您的评论。
最好的问候,霍斯林。

Thanks for helping me in this case,your answers really help me
but i found my aim :
i just wanted to use windows form (form1) in to wpf windows (not my windows form controls )
in my form code,i just change the inheritance of form1 to Usercontrol instead of Form like this

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

therefor i can use this usercontrol in my windosformshost because my form is usercontrol now(nice job)
but i got another problem , my controls didn't have visual sytle , cause of that i search in msdn , i got the answer from this link visual_Problem and the answer was in enable_visual
i mean , before the winformshot host my windows form(ofcource my usercontrol) i should write this code :

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

Thanks for your comments.
Best Regards, Hothreeyn.

阪姬 2025-01-01 10:39:00

来自 MSDN: WindowsFormsHost 类

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

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

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

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

from MSDN: WindowsFormsHost Class

Use the WindowsFormsHost element to place a Windows Forms control
within your WPF element or page.

To host a WPF element in a Windows Forms control or form, use the
ElementHost control.

To host a Windows Forms control in a WPF element, you must assign the
Windows Forms control to the Child property.

I think you should handle the MDI layout in WPF and then inside the WPF child windows you put the WindowsFormsHost control and once you created the windows forms control you assign it as child of the WindowsFormsHost.

一向肩并 2025-01-01 10:39:00

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

Refer to the MSDN Documentation for the WindowsFormsHost control in WPF. There is an example at the bottom of the documentation to show how it can be used to integrate WinForms control into WPF. All you will need to do is change the MaskedTextBox to your control: Form1.

两人的回忆 2025-01-01 10:39:00

据我了解,您无法让整个 WinForm 与 WPF 进行互操作。您可以通过 WindowsFormHost 将 WinForm 控件放置在 WPF 表面上,但不能放置在窗体上。

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

As I understand it, you can't get an entire WinForm to interoperate with WPF. You can place WinForm controls on WPF surfaces via the WindowsFormHost, but not a form.

If you can package all of the contents of your WinForm Form into a WinForm UserControl, than you should be able to pull this off.

左耳近心 2025-01-01 10:39:00

通过使用 WindowsFormHost 控件,您可以在 WPF 中使用 Windows 窗体控件。
您可以参考此链接

Using WindowsFormHost control, you can use a Windows Forms control in WPF.
you can refer this link.

苦妄 2025-01-01 10:39:00

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

WPF has no native support for MDI, you can use this wpfmdi.codeplex.com or more complex this one chronoswpf.codeplex.com

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文