本站使用了 Pjax 等基于 JavaScript 的开发技术,但您的浏览器已禁用 JavaScript,请开启 JavaScript 以保证网站正常显示!

wpf嵌入winform控件

实现地方法思路可以简单地概括为:在wpf设计界面放置一个容器,在后台c#代码新建winform控件,将其添加进容器。此方法支持嵌入标准库的控件以及自定义或者第三方封装好的winform控件。方法流程如下:

1、引入DLL

首先要引用两个winform相关的dll.

  • WindowsFormsIntegration.dll
  • System.Windows.Forms.dll

以上两个dll是必须引入的,另外,如果需要嵌入的控件已经封装成dll,那么也需要手动引入。

2、在xmal中添加命名空间

xmlns:wfi="clr-namespace:System.Windows.Forms.Integration;assembly=WindowsFormsIntegration"

这个命名空间是必须的,如果界面嵌入标准库控件,则添加以下两个命名空间

xmlns:wfi ="clr-namespace:System.Windows.Forms.Integration;assembly=WindowsFormsIntegration" 
        xmlns:wf ="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"

3、在xmal设计界面添加宿主容器

添加标准库容器与控件方法如下

<!--PictureBox为例子-->
<Grid HorizontalAlignment="Left" Height="482" Margin="6,6,0,0" VerticalAlignment="Top" Width="737">
            <wfi:WindowsFormsHost>
                <wf:PictureBox x:Name="Cv_Main" Margin="0,0,0,0"></wf:PictureBox>
            </wfi:WindowsFormsHost>
</Grid>

添加第三方控件,则只需要在设计界面放置宿主容器,但必须命名

<Grid HorizontalAlignment="Left" Height="482" Margin="6,6,0,0" VerticalAlignment="Top" Width="737">
            <wfi:WindowsFormsHost
                x:Name="WinFormHost">
                <!--留空-->
            </wfi:WindowsFormsHost>
</Grid>

然后再后台代码添加,方法如下

using YourControlNamespace;
YourControl control = new YourControl();
this.WinFormHost.Child = control;//宿主容器必须命名,否则后台找不到宿主添加

按照上面的方法,修改自己控件的命名空间以及名字。至此,便可顺利将winform控件成功嵌入wpf。


本文由芒果浩明发布,转载请注明来源。
本文链接:https://mangoroom.cn/donet/wfp-import-winform-control.html


 继续浏览关于 c#wpfwinform 的文章

 本文最后更新于:2019/09/05 18:28:39,可能因经年累月而与现状有所差异

 引用转载请注明:芒果的Blog > DotNet > wpf嵌入winform控件

精选评论

  1. 搬瓦工
    搬瓦工 回复

    Windows 8.1Chrome 63.0.3239.132

    学习了
    感谢分享

  2. 鳄鱼皮具
    鳄鱼皮具 回复

    Windows 7Chrome 73.0.3683.86

    看了,还是不动