如何在WPF應用程序中使用FastReport.Net組件
今天我將向你展示,如何在WPF中使用針對WinForms應用程序設計的FastReport.Net控件。其實一切都很簡單。WPF應用程序允許你使用WinForms控件,且WinForms應用程序允許你使用WPF控件。針對跨平臺的控件使用,我們有特殊組件 - hosts。具體而言,特殊組件WindowsFormsHost,可以幫助你在WPF中顯示WinForms控件。
我們來創建一個WPF項目。首先,將FastReport.dll添加到引用。
從工具箱中拖動按鈕組件到主表單上。在屬性檢查器中,將其標題更改為“運行報表設計器”:
然后創建另一個按鈕,標題文本為“運行報表預覽”:
每個按鈕將啟動一個單獨的表單。在第一張表單中,我們將放置設計器組件,第二張表單中放置預覽組件。添加一個新表單(窗口)。你可以通過右鍵單擊Solution Explorer中的項目名稱來執行此操作。在上下文菜單中選擇Add-> Window。我們將窗口命名為“Designer.xaml”。
以同樣的方式,我們添加另一個窗口。把它叫做“Preview.xaml”。
轉到Designer.xaml。將WindowsFormsHost組件從工具箱拖到窗體中。
它看起來是這樣:
你必須在屬性檢查器中指定此組件的名稱。最初,它并沒有默認定義的名稱。我將它命名為“WindowsFormsHost1”。
在Studio的底部,你可以看到用戶表單模板的xml代碼。請注意添加的組件代碼:
… <Grid> <WindowsFormsHost x:Name="WindowsFornsHost1" HorizontalAlignment="Left" Height="100" Margin="10,10,0,0" VerticalAlignment="Top" Width="100"/> </Grid> …
如你所見,很多屬性負責表單上組件的位置。讓我們刪除標簽WindowsFormsHost中的所有屬性,除了:
<Grid> <WindowsFormsHost x:Name="WindowsFornsHost1" /> </Grid>
現在,組件將被拉伸到窗口的寬度和高度:
打開窗口的代碼編輯器(右鍵單擊表單 - ViewCode)。
添加FastReport庫:
using FastReport;
在這個類中,我們創建一個DesignerControl對象的實例并將其分配給WindowsFormsHost1:
public partial class Designer : Window { FastReport.Design.StandardDesigner.DesignerControl designer = new FastReport.Design.StandardDesigner.DesignerControl(); Report report1 = new Report(); public Designer() { InitializeComponent(); designer.Report = report1; designer.RefreshLayout(); WindowsFormsHost1.Child = designer; } } }
因為設計器應該顯示報表,即使它是空的,我們還要創建一個報表對象的實例,并將其加載到設計器中。然后我們更新設計器并將設計器對象分配給我們的host。
轉到Preview.xaml窗口。和上一個窗口一樣,我們將WindowsFormsHost組件添加到窗體中,并將??其命名為“WindowsFormsHost2”。我們刪除負責組件大小和位置的屬性。打開這個窗口的代碼編輯器。
添加FastReport庫:
using FastReport;
在該類中,創建一個PrewiewControl對象的實例和一個報表對象的實例。我們需要加載一個現有的報表,并將創建的預覽分配給報表對象。
public partial class Preview : Window { FastReport.Preview.PreviewControl prew = new FastReport.Preview.PreviewControl(); Report report = new Report(); public Preview() { InitializeComponent(); report.Load(@"J:\Program Files (x86)\FastReports\FastReport.Net\Demos\Reports\Text.frx"); report.Preview = prew; report.Prepare(); report.ShowPrepared(); WindowsFormsHost2.Child = prew; }
在為報表分配預覽后,我們構建報表并顯示它。在最后一行代碼中,我們將預覽對象分配給host。
應用程序已經準備就緒。我們返回最開始帶有按鈕的主表單。選擇第一個按鈕。在屬性檢查器中,切換到事件。并通過雙擊創建Click事件:
我們添加簡單的代碼:
private void button_Click(object sender, RoutedEventArgs e) { Designer dsg = new Designer(); dsg.Show(); }
這里我們創建一個設計器窗口的實例并顯示它。同樣,我們為第二個按鈕創建一個Click事件:
private void button1_Click(object sender, RoutedEventArgs e) { Preview prew = new Preview(); prew.Show(); }
創建預覽窗口的實例并顯示它。運行程序:
按第一個按鈕,會打開一個設計器窗口:
我們關閉它,然后按下第二個按鈕,以預覽模式獲取報表:
就是這樣。多虧有WindowsFormsHost,一切都非常簡單。
推薦閱讀
- FastReport VCL報表控件開發者手冊
- FastReport Online Designer中文手冊
- Fastreport.Net教程2016
- Fastreport.Net用戶手冊
- FastReport.Net教程2017(持續更新中···)
- FastReport Online Designer教程2017(持續更新中···)
- 報表教程2017(持續更新中···)
- FastReport.Net v2018.1版本更新已經發布!