用WPF做報表控制項(二)

2021-08-27 10:56:37 字數 448 閱讀 5518

首先我們看一下報表控制項最終的效果:

我們可以把報表看成是三部分,分別是表頭,表主體和表尾。如果我們不使用wpf自帶的datagrid,自己一根線一根線去畫的話,這個**估計也是大工程了。所以一開始,我們就考慮使用datagrid。但datagrid怎麼做出如圖所示的表頭和表尾呢?好像根本就不可能啊。嘗試過很多方法之後,我必須承認,真的不可能。但我想到了另外一種方法。可以做乙個自定義控制項,分成三行。第一行是乙個grid,多少行多少列都好控制。第二行是主體,明顯就是datagrid了。第三行也可以用grid做,我們使用了stackpanel,關係都不大,看具體需求。

這樣的設計,可能你一看就會看出一些問題來,或許還會覺得行不通。但實際上,報表控制項基本解決了這些問題。我們將在後面的章節講解每部分的開發方法。

用WPF做報表控制項(一)

datagrid是wpf自帶的報表控制項,但其功能簡單,很多時候無法滿足我們的需求。第三方庫 如devexpress 報表功能強大,但一方面資源消耗比較多,另一方面效能也較差,在一些比較差的電腦上執行很吃力。我之前就嘗試過在工控機上使用devexpress,每次啟動都需要等幾秒甚至十幾秒半分鐘,體驗...

用WPF做報表控制項(三)

1 表頭列寬變化時,主體和表尾的列寬怎麼跟著變化。2 如何初始化這個複雜的表頭。第乙個問題其實並不難,在grid每一列右側,都加入乙個gridsplitter,然後新增dragdelta和dragcompleted兩個拖動事件即可。gs.dragdelta gridsplitter dragdelt...

用shell做制報表

執行效果 設定行,可以是表頭,也可以是 內容。如果是 內容,表示空值 function setrow n 行分隔線 入參 的列數。如 有5列,則入參為5 function splitline n 繪製 入參 table function settable else if shlvl eq 2 the...