【轉】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、

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM