【转】WPF中添加winform 窗体

1、WPF 中添加winform 窗体 - 不是我的博客 - CSDN博客.html(https://blog.csdn.net/u011854789/article/details/54668859

 1.1、

  ZC:假设 WPF工程为 A工程,WinForm工程为 B工程。

  1. 将原来的winform程序中的MainForm类的构造函数权限改成 public
  2. 项目输出由 应用程序改成 类库 (假设mainform.dll)    ZC:在 B工程-->项目--> 右键属性-->标签页"应用程序"中修改
  3. 添加必要的引用      ZC:A工程 中添加引用
  System.Windows.Forms
  WindowsFormsIntegration
  以及mainform.dll
  1. 在wpf的xaml中添加一个windowsformhost,假设name = wfh;
  2. 在MainWindow()中添加新建一个待添加的窗体类(比如 MainForm)对象

           MainForm mainform = new MainForm();
           wfh.Child = mainform;

  1. 捕获到异常,子空间不能为顶级窗体,故把MainForm的TopLevel属性设为false即可;
  2. 最后运行程序,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、

猜你喜欢

转载自www.cnblogs.com/csskill/p/11388375.html
今日推荐