如何在WPF應(yīng)用程序中使用FastReport.Net組件
今天我將向你展示,如何在WPF中使用針對WinForms應(yīng)用程序設(shè)計的FastReport.Net控件。其實一切都很簡單。WPF應(yīng)用程序允許你使用WinForms控件,且WinForms應(yīng)用程序允許你使用WPF控件。針對跨平臺的控件使用,我們有特殊組件 - hosts。具體而言,特殊組件WindowsFormsHost,可以幫助你在WPF中顯示W(wǎng)inForms控件。
我們來創(chuàng)建一個WPF項目。首先,將FastReport.dll添加到引用。
從工具箱中拖動按鈕組件到主表單上。在屬性檢查器中,將其標(biāo)題更改為“運行報表設(shè)計器”:
然后創(chuàng)建另一個按鈕,標(biāo)題文本為“運行報表預(yù)覽”:
每個按鈕將啟動一個單獨的表單。在第一張表單中,我們將放置設(shè)計器組件,第二張表單中放置預(yù)覽組件。添加一個新表單(窗口)。你可以通過右鍵單擊Solution Explorer中的項目名稱來執(zhí)行此操作。在上下文菜單中選擇Add-> Window。我們將窗口命名為“Designer.xaml”。
以同樣的方式,我們添加另一個窗口。把它叫做“Preview.xaml”。
轉(zhuǎn)到Designer.xaml。將WindowsFormsHost組件從工具箱拖到窗體中。
它看起來是這樣:
你必須在屬性檢查器中指定此組件的名稱。最初,它并沒有默認(rèn)定義的名稱。我將它命名為“WindowsFormsHost1”。
在Studio的底部,你可以看到用戶表單模板的xml代碼。請注意添加的組件代碼:
… <Grid> <WindowsFormsHost x:Name="WindowsFornsHost1" HorizontalAlignment="Left" Height="100" Margin="10,10,0,0" VerticalAlignment="Top" Width="100"/> </Grid> …
如你所見,很多屬性負(fù)責(zé)表單上組件的位置。讓我們刪除標(biāo)簽WindowsFormsHost中的所有屬性,除了:
<Grid> <WindowsFormsHost x:Name="WindowsFornsHost1" /> </Grid>
現(xiàn)在,組件將被拉伸到窗口的寬度和高度:
打開窗口的代碼編輯器(右鍵單擊表單 - ViewCode)。
添加FastReport庫:
using FastReport;
在這個類中,我們創(chuàng)建一個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; } } }
因為設(shè)計器應(yīng)該顯示報表,即使它是空的,我們還要創(chuàng)建一個報表對象的實例,并將其加載到設(shè)計器中。然后我們更新設(shè)計器并將設(shè)計器對象分配給我們的host。
轉(zhuǎn)到Preview.xaml窗口。和上一個窗口一樣,我們將WindowsFormsHost組件添加到窗體中,并將??其命名為“WindowsFormsHost2”。我們刪除負(fù)責(zé)組件大小和位置的屬性。打開這個窗口的代碼編輯器。
添加FastReport庫:
using FastReport;
在該類中,創(chuàng)建一個PrewiewControl對象的實例和一個報表對象的實例。我們需要加載一個現(xiàn)有的報表,并將創(chuàng)建的預(yù)覽分配給報表對象。
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; }
在為報表分配預(yù)覽后,我們構(gòu)建報表并顯示它。在最后一行代碼中,我們將預(yù)覽對象分配給host。
應(yīng)用程序已經(jīng)準(zhǔn)備就緒。我們返回最開始帶有按鈕的主表單。選擇第一個按鈕。在屬性檢查器中,切換到事件。并通過雙擊創(chuàng)建Click事件:
我們添加簡單的代碼:
private void button_Click(object sender, RoutedEventArgs e) { Designer dsg = new Designer(); dsg.Show(); }
這里我們創(chuàng)建一個設(shè)計器窗口的實例并顯示它。同樣,我們?yōu)榈诙€按鈕創(chuàng)建一個Click事件:
private void button1_Click(object sender, RoutedEventArgs e) { Preview prew = new Preview(); prew.Show(); }
創(chuàng)建預(yù)覽窗口的實例并顯示它。運行程序:
按第一個按鈕,會打開一個設(shè)計器窗口:
我們關(guān)閉它,然后按下第二個按鈕,以預(yù)覽模式獲取報表:
就是這樣。多虧有WindowsFormsHost,一切都非常簡單。
產(chǎn)品介紹 | 下載試用 | 優(yōu)惠活動 | 在線客服 | 聯(lián)系Elyn
推薦閱讀
- FastReport VCL報表控件開發(fā)者手冊
- FastReport Online Designer中文手冊
- Fastreport.Net教程2016
- Fastreport.Net用戶手冊
- FastReport.Net教程2017(持續(xù)更新中···)
- FastReport Online Designer教程2017(持續(xù)更新中···)
- 報表教程2017(持續(xù)更新中···)
- FastReport.Net v2018.1版本更新已經(jīng)發(fā)布!