Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将现有表单类从WinForms应用程序插入WPF应用程序_C#_.net_Wpf_Winforms - Fatal编程技术网

C# 如何将现有表单类从WinForms应用程序插入WPF应用程序

C# 如何将现有表单类从WinForms应用程序插入WPF应用程序,c#,.net,wpf,winforms,C#,.net,Wpf,Winforms,我在名为AMC\u Demo的应用程序中创建了一个名为:Form1的表单。如何将Form1从WinForms应用程序逐步导入WPF应用程序 在AMC\u Demo的源目录中,我有Form1.cs,Form1.Designer.csForm1.resx。我应该如何复制到WPF项目目录中,以及如何导入它们,以便在WPF解决方案中进行修改和开发 我已经添加了对:System.Windows.Forms和WindowsFormsIntegration 如何将表单对象导入WPF项目?我确实会问,因为我曾尝

我在名为
AMC\u Demo
的应用程序中创建了一个名为:
Form1
的表单。如何将
Form1
从WinForms应用程序逐步导入WPF应用程序

AMC\u Demo
的源目录中,我有
Form1.cs
Form1.Designer.cs
Form1.resx
。我应该如何复制到WPF项目目录中,以及如何导入它们,以便在WPF解决方案中进行修改和开发

我已经添加了对:
System.Windows.Forms
WindowsFormsIntegration


如何将表单对象导入WPF项目?我确实会问,因为我曾尝试复制到WPF项目目录,然后添加现有项,但据我记忆所及,它是作为“其他解决方案”添加到项目中的。

您应该能够从WPF应用程序中创建并显示表单:

// Within some method where you want the form to display
Form1 form = new Form1();
form.Show();
WindowsFormsHost
仅当您希望在WPF
FrameworkElement
中嵌入Windows窗体
UserControl
(或其他
控件
)时才需要。阅读本演练,您可以看到WinFormHost是WinForm窗体类的一个特殊实例。您可以通过编程方式向其中添加控件

对于现有表单类:将表单对象导入到项目中(如中所示,请确保可以编辑它),然后将其继承从“表单”更改为“WinFormHost”。您现在可以实例化它并将其添加到WPF窗口,就像使用WinFormHost一样


编辑:如我在评论中所说:将文件复制到WPF项目文件夹中,然后在VS中右键单击项目并选择“添加现有项”。然后选择复制的文件。您可能需要添加一些对WinForm相关.Net库的引用,以便对其进行编译,但编译错误应该会对您有所帮助。不过,不要复制任何项目文件(如.csproj)。这些可能会显示为“其他解决方案”。

谢谢,但我想从这个
AMC\u演示项目中复制Form1。我不想从头开始创建它。@Yoda只需从WPF添加对此项目的引用,并使用现有表单即可。无需从头开始创建。是否可以从
AMC_DEMO
物理添加表单,使其显示在
WPF
app solution explorer中?@Yoda是-只要复制文件,并将其添加到其他项目,如果您想这样做的话。不过,您需要添加对
System.Windows.Forms
的引用。在选项2中,如何将表单对象示例导入WPF项目。在
AMC\u Demo
的源目录中,我有
Form1.cs
Form1.Designer.cs
Form1.resx
。我应该复制到WPF项目目录中的哪一个以及如何复制到WPF项目目录中,以及如何导入它们,以便我可以在WPF目录中对其进行修改。您必须将这三个项目都复制到WPF项目文件夹(或为此而创建的子文件夹),然后在Visual Studio中选择“添加现有项”。如果表单引用了其他类和控件,则在向原始项目添加引用时,不需要复制这些类和控件。正如Reed Copsey所说,您可能需要添加对某些WinForm.Net库的引用。