ComponentOne使用技巧——從Winform穿越到WPF
概述
WPF 和 Winform 是兩個單獨的平臺,但二者又都是基於 .NET 4.0 以上版本開發的,所以很多.NET開發人員就開始研究如何在WPF中使用Winform。微軟已經架設了兩個開發平臺的之間的通訊橋樑,目前為止二者相互轉換使用已經相當成熟了,今天主要給大家講講如何在這兩個平臺下呼叫 ComponentOne 的控制元件。
本文主要用 FlexReport .NET報表控制元件,作為介質進行兩個平臺的連結
Step 1
首先,我們還是把兩個平臺的基本通訊通道搭建起來,很簡單,網上有很多步驟,總結起來主要分三步:
-
新增兩個引用:WindowsFormsIntegration.dll(負責整合WPF和Windows)、System.Windows.Forms.
-
在 XAML檔案中新增兩個引用(粗體部分):
<Window x:Class="CrossBowDemo.MainWindow"xmlns:wfi ="clr-namespace:System.Windows.Forms.Integration;assembly=WindowsFormsIntegration"xmlns:wf ="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"xmlns="
解釋一下,這段程式碼真正起作用的是這個引用 WindowsFormsIntegration.dll ,而這個引用System.Windows.Forms 指的是Winform裡面的微軟的原生態控制元件,所以在用到ComponentOne時,可以不引用它。
我們先看一個示例:透過微軟原生態控制元件在WPF中使用Winform,程式碼如下:
<wfi:WindowsFormsHost> <wf:DataGridView x:Name="Dg" Dock="Fill" SelectionMode="FullRowSelect"> </wf:DataGridView> </wfi:WindowsFormsHost>
WindowsFormsHost其實是Winform在WPF的容器,所以Winform的控制元件顯示都要在這個容器裡面。
Setp2
上面我們說了,我們以FlexReport為介質進行通訊,那我們需要準備的幾個小步驟:
-
Winform下FlexReport的模板
-
相關引用
注意:這裡面的引用是Winform的引用。同樣,我們需要在xmal中引用:
xmlns:cc11="clr-namespace:C1.Win.FlexViewer;assembly=C1.Win.FlexViewer.4"
在佈局中新增可供報表預覽的控制元件
<Grid> <wfi:WindowsFormsHost> <cc11:C1FlexViewerPane x:Name="flexViewerPane" ></cc11:C1FlexViewerPane> </wfi:WindowsFormsHost> </Grid>
Setp3
我們在後臺載入報表
private C1FlexReport _report; public Window1() { InitializeComponent(); _report = new C1FlexReport(); // load report definition from resources Assembly asm = Assembly.GetExecutingAssembly(); using (Stream stream = asm.GetManifestResourceStream("WpfApp1.Resources.FlexCommonTasks.flxr")) _report.Load(stream, "Chart2D"); // assign report to the preview pane flexViewerPane.DocumentSource = null; flexViewerPane.DocumentSource = _report; }
注:切記,這裡面的報表是Winform平臺下的
到這一步,我們工作完成了一大半,還差最後一步點石成金的步驟。很多人以為在這就結束了,但是我們要考慮 ComponentOne License 授權的問題,如何把Winform 的授權在WPF下注冊,其實很簡單,因為 .NET 的license機制一樣,我們只需用同樣的方式去註冊控制元件的license ,不過這裡推薦 手動註冊 ,這很重要,因為一不小心,就會報lc.exe=-1的錯誤
這裡我們都用到了
-
C1FlexViewerPane
-
C1FlexReport
所以我們在license檔案中寫如下注冊資訊
C1.Win.FlexReport.C1FlexReport, C1.Win.FlexReport.4 C1.Win.FlexViewer.C1FlexViewerPane, C1.Win.FlexViewer.4
至此,我們就大功告成了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28298702/viewspace-2218838/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- wpf專案使用winform控制元件ORM控制元件
- 在WPF中使用WinForm控制元件方法ORM控制元件
- .NET桌面程式(WINFORM或WPF)的部署ORM
- WPF窗體中嵌入/使用WinForm類/控制元件(基於.NET Core)ORM控制元件
- 【WPF】CAD工程圖紙轉WPF可直接使用的xaml程式碼技巧
- .NET 開源免費圖表元件庫,Winform,WPF 通用元件ORM
- 後續來啦:Winform/WPF中快速搭建日誌皮膚ORM
- Winform RichTextBox 使用記錄ORM
- wpf winform 選擇檔案或選擇資料夾程式碼ORM
- 穿越到 1983 年學習 BASIC
- 在WPF中使用Winform中自帶的畫圖控制元件Chart,模擬動態更新資料ORM控制元件
- WinForm依賴注入簡單使用ORM依賴注入
- WPF 程式使用 MediatR
- 【.NET開發之美】使用ComponentOne提高.NET DataMap中的載入速度
- 來到「核聚變」的玩家們:從現實世界穿越到遊戲烏托邦遊戲
- WPF + Winform 解決管理員許可權下無法拖放檔案的問題ORM
- 使用singleflight防止快取擊穿(Java)快取Java
- winformORM
- ComponentOne – 控制元件界的“瑞士軍刀”控制元件
- WPF使用Grid佈局
- 6個你可能從未使用過的Python技巧!Python
- 在WPF中使用著色器
- dotnet 透過 Elmish.WPF 使用 F# 編寫 WPF 應用
- WPF 視覺狀態VisualState使用視覺
- WPF所有原生空間使用demo
- WPF 使用附加屬性宣告 ICommand
- WPF使用MVVM(三)-事件轉命令MVVM事件
- WPF使用MVVM(二)-命令繫結MVVM
- WPF 之 INotifyPropertyChanged 介面的使用 (一)
- .NET混合開發解決方案12 網頁JS呼叫C#方法訪問WinForm或WPF窗體網頁JSC#ORM
- clion使用技巧
- PPT使用技巧
- Fiddler使用技巧
- Python使用技巧Python
- chrome使用技巧Chrome
- Git 使用技巧Git
- bcm 使用技巧
- CListCtrl使用技巧