原創(chuàng)|使用教程|編輯:我只采一朵|2018-01-09 13:35:08.000|閱讀 1407 次
概述:今天我將向你展示,如何在WPF中使用針對(duì)WinForms應(yīng)用程序設(shè)計(jì)的FastReport.Net控件。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
今天我將向你展示,如何在WPF中使用針對(duì)WinForms應(yīng)用程序設(shè)計(jì)的FastReport.Net控件。其實(shí)一切都很簡(jiǎn)單。WPF應(yīng)用程序允許你使用WinForms控件,且WinForms應(yīng)用程序允許你使用WPF控件。針對(duì)跨平臺(tái)的控件使用,我們有特殊組件 - hosts。具體而言,特殊組件WindowsFormsHost,可以幫助你在WPF中顯示W(wǎng)inForms控件。
我們來創(chuàng)建一個(gè)WPF項(xiàng)目。首先,將FastReport.dll添加到引用。
從工具箱中拖動(dòng)按鈕組件到主表單上。在屬性檢查器中,將其標(biāo)題更改為“運(yùn)行報(bào)表設(shè)計(jì)器”:
然后創(chuàng)建另一個(gè)按鈕,標(biāo)題文本為“運(yùn)行報(bào)表預(yù)覽”:
每個(gè)按鈕將啟動(dòng)一個(gè)單獨(dú)的表單。在第一張表單中,我們將放置設(shè)計(jì)器組件,第二張表單中放置預(yù)覽組件。添加一個(gè)新表單(窗口)。你可以通過右鍵單擊Solution Explorer中的項(xiàng)目名稱來執(zhí)行此操作。在上下文菜單中選擇Add-> Window。我們將窗口命名為“Designer.xaml”。
以同樣的方式,我們添加另一個(gè)窗口。把它叫做“Preview.xaml”。
轉(zhuǎn)到Designer.xaml。將WindowsFormsHost組件從工具箱拖到窗體中。
它看起來是這樣:
你必須在屬性檢查器中指定此組件的名稱。最初,它并沒有默認(rèn)定義的名稱。我將它命名為“WindowsFormsHost1”。
在Studio的底部,你可以看到用戶表單模板的xml代碼。請(qǐng)注意添加的組件代碼:
… <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庫(kù):
using FastReport;
在這個(gè)類中,我們創(chuàng)建一個(gè)DesignerControl對(duì)象的實(shí)例并將其分配給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; } } }
因?yàn)樵O(shè)計(jì)器應(yīng)該顯示報(bào)表,即使它是空的,我們還要?jiǎng)?chuàng)建一個(gè)報(bào)表對(duì)象的實(shí)例,并將其加載到設(shè)計(jì)器中。然后我們更新設(shè)計(jì)器并將設(shè)計(jì)器對(duì)象分配給我們的host。
轉(zhuǎn)到Preview.xaml窗口。和上一個(gè)窗口一樣,我們將WindowsFormsHost組件添加到窗體中,并將??其命名為“WindowsFormsHost2”。我們刪除負(fù)責(zé)組件大小和位置的屬性。打開這個(gè)窗口的代碼編輯器。
添加FastReport庫(kù):
using FastReport;
在該類中,創(chuàng)建一個(gè)PrewiewControl對(duì)象的實(shí)例和一個(gè)報(bào)表對(duì)象的實(shí)例。我們需要加載一個(gè)現(xiàn)有的報(bào)表,并將創(chuàng)建的預(yù)覽分配給報(bào)表對(duì)象。
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; }
在為報(bào)表分配預(yù)覽后,我們構(gòu)建報(bào)表并顯示它。在最后一行代碼中,我們將預(yù)覽對(duì)象分配給host。
應(yīng)用程序已經(jīng)準(zhǔn)備就緒。我們返回最開始帶有按鈕的主表單。選擇第一個(gè)按鈕。在屬性檢查器中,切換到事件。并通過雙擊創(chuàng)建Click事件:
我們添加簡(jiǎn)單的代碼:
private void button_Click(object sender, RoutedEventArgs e) { Designer dsg = new Designer(); dsg.Show(); }
這里我們創(chuàng)建一個(gè)設(shè)計(jì)器窗口的實(shí)例并顯示它。同樣,我們?yōu)榈诙€(gè)按鈕創(chuàng)建一個(gè)Click事件:
private void button1_Click(object sender, RoutedEventArgs e) { Preview prew = new Preview(); prew.Show(); }
創(chuàng)建預(yù)覽窗口的實(shí)例并顯示它。運(yùn)行程序:
按第一個(gè)按鈕,會(huì)打開一個(gè)設(shè)計(jì)器窗口:
我們關(guān)閉它,然后按下第二個(gè)按鈕,以預(yù)覽模式獲取報(bào)表:
就是這樣。多虧有WindowsFormsHost,一切都非常簡(jiǎn)單。
產(chǎn)品介紹 | 下載試用 | 優(yōu)惠活動(dòng) | | 聯(lián)系Elyn
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn