• <menu id="w2i4a"></menu>
  • logo Fastreport.Net 教程2018(完結(jié))

    文檔首頁>>Fastreport.Net 教程2018(完結(jié))>>如何在WPF應(yīng)用程序中使用FastReport.Net組件

    如何在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è)計器”:

    如何在WPF應(yīng)用程序中使用FastReport.Net組件

    然后創(chuàng)建另一個按鈕,標(biāo)題文本為“運行報表預(yù)覽”:

    如何在WPF應(yīng)用程序中使用FastReport.Net組件

    每個按鈕將啟動一個單獨的表單。在第一張表單中,我們將放置設(shè)計器組件,第二張表單中放置預(yù)覽組件。添加一個新表單(窗口)。你可以通過右鍵單擊Solution Explorer中的項目名稱來執(zhí)行此操作。在上下文菜單中選擇Add-> Window。我們將窗口命名為“Designer.xaml”。

    以同樣的方式,我們添加另一個窗口。把它叫做“Preview.xaml”。

    轉(zhuǎn)到Designer.xaml。將WindowsFormsHost組件從工具箱拖到窗體中。

    如何在WPF應(yīng)用程序中使用FastReport.Net組件

    它看起來是這樣:

    如何在WPF應(yīng)用程序中使用FastReport.Net組件

    你必須在屬性檢查器中指定此組件的名稱。最初,它并沒有默認(rèn)定義的名稱。我將它命名為“WindowsFormsHost1”。

    如何在WPF應(yīng)用程序中使用FastReport.Net組件

    在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)在,組件將被拉伸到窗口的寬度和高度:

    如何在WPF應(yīng)用程序中使用FastReport.Net組件

    打開窗口的代碼編輯器(右鍵單擊表單 - 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事件:

    如何在WPF應(yīng)用程序中使用FastReport.Net組件

    我們添加簡單的代碼:

    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ù)覽窗口的實例并顯示它。運行程序:

    如何在WPF應(yīng)用程序中使用FastReport.Net組件

    按第一個按鈕,會打開一個設(shè)計器窗口:

    如何在WPF應(yīng)用程序中使用FastReport.Net組件

    我們關(guān)閉它,然后按下第二個按鈕,以預(yù)覽模式獲取報表:

    如何在WPF應(yīng)用程序中使用FastReport.Net組件

    就是這樣。多虧有WindowsFormsHost,一切都非常簡單。

    產(chǎn)品介紹 下載試用 | 優(yōu)惠活動 | 在線客服 | 聯(lián)系Elyn

     

    推薦閱讀

    FastReport 2018 最新版本下載
    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    023-68661681

    TOP
    三级成人熟女影院,欧美午夜成人精品视频,亚洲国产成人乱色在线观看,色中色成人论坛 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();