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、