1、WPF 中添加winform 窗体 - 不是我的博客 - CSDN博客.html(https://blog.csdn.net/u011854789/article/details/54668859)
1.1、
ZC:假设 WPF工程为 A工程,WinForm工程为 B工程。
- 将原来的winform程序中的MainForm类的构造函数权限改成 public
- 项目输出由 应用程序改成 类库 (假设mainform.dll) ZC:在 B工程-->项目--> 右键属性-->标签页"应用程序"中修改
- 添加必要的引用 ZC:A工程 中添加引用
- 在wpf的xaml中添加一个windowsformhost,假设name = wfh;
- 在MainWindow()中添加新建一个待添加的窗体类(比如 MainForm)对象
MainForm mainform = new MainForm();
wfh.Child = mainform;
- 捕获到异常,子空间不能为顶级窗体,故把MainForm的TopLevel属性设为false即可;
- 最后运行程序,OK!
2、
3、
4、
5、
6、wpf怎么使用WindowsFormsHost(即winform控件) - qq_31971935的博客 - CSDN博客.html(https://blog.csdn.net/qq_31971935/article/details/72819736)
使用方法:
1、首先,我们需要向项目中的引用(reference)中添加两个动态库dll,一个是.NET库中的System.Windows.Forms
,另外一个是WindowsFormsIntegration
;
2、添加完两个动态dll以后,就可以在控件库中找到WindowsFormsHost这个控件;
3、将这个控件放入窗体,放置完以后在xmal代码中会自动生成相应代码:
<Grid> <WindowsFormsHost Height="100" HorizontalAlignment="Left" Margin="36,29,0,0" Name="windowsFormsHost1" VerticalAlignment="Top" Width="200" /> </Grid>
4、然后,需要在xmal的开始处添加两行代码 :
xmlns:WinFormHost="clr-namespace:System.Windows.Forms.Integration;assembly=WindowsFormsIntegration" xmlns:WinFormControls="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"
5、这样就可以在WindowsFormsHost下放置需要的Windows Form控件了。
<WindowsFormsHost Height="196" HorizontalAlignment="Left" Margin="104,65,0,0" Name="windowsFormsHost1" VerticalAlignment="Top" Width="286" > <WinFormControls:Button Text="WinformButton" Width="150"/> </WindowsFormsHost>
7、
ZC:按照上面的做了 重新生成工程,还有报错:
7.1、工程结构是这样的:(WPF_FFME 是主工程,DemoRealChart是 加入进来的另一个工程,WPF_FFME 要显示 DemoRealChart里面的 WinForm)
7.2、我用 EditPlus搜索 "RealChart.cs",发现 "E:\WPF_FFME\WPF_FFME\WPF_FFME.csproj"里面的这一行数据比较靠谱:
ZC:我修改它们,原来的是 上面那样,修改成这样:
<Compile Include="..\DemoRealChart\RealChart.cs" /> <Compile Include="..\DemoRealChart\RealChart.Designer.cs" />
然后 VS2017会重新加载,然后就变成这样了:
7.3、<EmbeddedResource Include="RealChart.resx" /> 使用 同样的操作:
<EmbeddedResource Include="..\DemoRealChart\RealChart.resx" />
8、
9、