Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.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 UserControl显示在WPF Visual C项目的工具箱中?_C#_Wpf_Winforms_Visual Studio_Xaml - Fatal编程技术网

C# 是否使WinForms UserControl显示在WPF Visual C项目的工具箱中?

C# 是否使WinForms UserControl显示在WPF Visual C项目的工具箱中?,c#,wpf,winforms,visual-studio,xaml,C#,Wpf,Winforms,Visual Studio,Xaml,我有一个Visual Studio 2012 C应用程序,它使用嵌套在WPF WindowsFormsHost容器中的WinForms用户控件。该应用程序运行良好。要将WinForms UserControl添加到项目中,我必须直接编辑主窗体的XAML文件。这并不难,但如果可能的话,我希望能够从工具箱里工作 我在堆栈溢出上发现了几个不同的线程,它们处理了在VisualStudio工具箱中显示控件的问题,但没有一个线程讨论过在WPF项目混合项目的工具箱中显示WinForms控件。注意,当我在Win

我有一个Visual Studio 2012 C应用程序,它使用嵌套在WPF WindowsFormsHost容器中的WinForms用户控件。该应用程序运行良好。要将WinForms UserControl添加到项目中,我必须直接编辑主窗体的XAML文件。这并不难,但如果可能的话,我希望能够从工具箱里工作

我在堆栈溢出上发现了几个不同的线程,它们处理了在VisualStudio工具箱中显示控件的问题,但没有一个线程讨论过在WPF项目混合项目的工具箱中显示WinForms控件。注意,当我在WinForms项目中使用WinForms UserControl时,它确实会出现在工具箱中。但是,如果宿主项目是WPF项目,我只能在工具箱中看到WPF控件。我尝试通过执行以下操作添加WinForms控件:

在工具箱中单击鼠标右键 选择项目 选择.NET Framework组件选项卡 浏览到包含WinForms UserControl的DLL 选择DLL并单击“确定” 所包含的控件将导入到.NET Framework组件列表中,但在退出“选择项”对话框后,不会显示在工具箱中。奇怪的是,我尝试卸载DLL的控件并重复此操作几次,结果不一致。我从来没有让控件显示出来,但有一次我看到一个对话框,上面说控件已经导入,但在设计器中不是活动的,我应该确保它们是兼容的。还有一次,我收到一个错误框,说DLL不包含任何可用的控件。大多数情况下,它会在.NET Framework组件列表中显示导入的控件,在列表中它们旁边有一个复选标记,行以蓝色突出显示。但是,尽管没有看到任何错误或警告消息,但它们也没有显示在工具箱中。注意,WinForms控件DLL的源.NET项目是解决方案中的一个项目


那么,有可能在WPF项目的工具箱中显示Winforms UserControl吗?如果是这样,怎么做?

不是最简单的解决方案,但是您可以创建一个包含WindowsFormsHost对象的包装器。我无法记录它,但我认为您无法以本机方式将这两种控件类型组合在一起,因为

编辑:我创建了一个WPF应用程序解决方案,然后向该解决方案添加了一个WPF用户控制库项目。之后,我在后一个项目中引用了WindowsFormsIntegration,添加了WindowsFormsHost容器,并将System.Windows.Forms.TextBox设置为其子级。编译后,工具箱中有一个新元素,包含新创建的控件。我可以将它从那里拖到所有WPF控件,或者从“选择项”对话框中选择已编译的程序集