Winform開發框架之資料曲線報表

2021-09-22 13:36:41 字數 3308 閱讀 5057

在專案開發中,往往會碰到一些非常規的需求,每次碰到這種情況,都需要花費時間來整理自己的思路,然後參考網路上其他人的實現方式或者作法,有時候可以找到一些相同的模組進行改進即可符合需求,但往往很多是需要自己潛心研究,然後提煉優化,雖然探索過程還是比較開心,不過時間肯定是需要花不少的。我每次碰到這種情況,都會沉下心來,力求把這種的模組做得更好一點,方便以後的重用,這樣每次抱著這樣的態度,著實積累了不少好的東西,也可以為後面的專案夯實基礎。

在一次winform的專案開發過程中,客戶需要對一些體檢資料等引數進行曲線展示,其實圖表控制項有很多,但是我印象比較深的還是開源的zedgraph控制項,這個既可以用在web上,也可以用在winform上的開源控制項,有著簡單易用的特點,因此我會先考慮是否可以滿足要求。在需求中,我需要定製顯示曲線報表的內容,按照每行乙個人員的資料,然後再每行中展現該人員的相關圖表資訊,而且這種的報表要可以實現列印的功能。在經過一段時間的摸索及實現提煉,得到了比較滿意的效果,先來進行總體的介紹先把。

通過把好的思路,有用的技巧進行積累整合到winform開發框架中,方便自己,也方便別人,提高工作效率。

一行乙個人員的曲線資料,可以對同一曲線專案進行對比,方便使用者的實際業務對比操作。

由於在乙個介面中展示多個圖表圖形的時候,會比較小,為了更直觀顯示曲線資料,可以通過單獨開啟乙個新的視窗進行曲線縮放操作,支援滑鼠的滾動放大縮小,同時zedgraph支援繪圖點的資訊提示,非常友好。

由於使用者控制項是自定義組裝的,因此要實現自定義的列印功能才可以,這個自定義列印的東西確實需要慢慢測試研究,這個地方花了不少時間。

通過在devexpress列印介面中展示預覽效果,方便可以進行列印確認操作,以及預覽最終的效果,並支援把文件匯出到pdf或者中,非常方便易用。

以上就是這個曲線報表的主要幾個特點,不過這樣的曲線,基本上能夠滿足我們日常的一些資料曲線的展現的了。

實現上我們需要把需求和介面拆分,首先我們在乙個設計主介面,在住介面上防止乙個tablelayout的布局控制項,方便我們動態新增每個單一的控制項進去。

1)設計報表顯示主介面

2)設計曲線報表元件

然後設計乙個空白的布局flowlayout控制項,用來擺放乙個或者多個的曲線報表專案,例如體重曲線、視力曲線、血壓曲線等專案的,實現**如下所示。

public

void

binddata()

else

if (curvedata.checktype ==checktype.年度大體檢)

else

if (curvedata.checktype ==checktype.飛行前體檢)

break

;

#endregion

} }

private

void

bindweight()

else

if (curvedata.checktype ==checktype.季度小體檢)

weightcurve curve = new

weightcurve();

curve.curvedata =curvedata;

curve.datatable =dt;

this

.layoutpanel1.controls.add(curve);

}

其他**不在贅述。

3)設計曲線專案元件

由於曲線報表涉及很多展示的專案,每項又有一些不同,因此我們為不同的專案設計乙個元件,如體重曲線如下所示,在乙個自定義控制項上面放置乙個zedgraph元件,設計好這個元件的相關屬性和事件。

這個控制項預設是英文的,所以如果需要使用中文選單,需要自己漢化一下**,然後編譯出來自己使用即可。

實現**如下所示

graphpane mypane =zgc.graphpane;

mypane.curvelist.clear();

//設定標題及座標軸的說明

mypane.title.text = string.format("

【】體重曲線

", curvedata.pilotname);

mypane.xaxis.title.text = "

體檢日期";

mypane.yaxis.title.text = "

體重(kg)";

pointpairlist list = new

pointpairlist();

foreach(datarow row in

datatable.rows)

lineitem mycurve = mypane.addcurve("體重"

, list, color.red, symboltype.diamond);

mycurve.symbol.fill = new fill(color.white);

4)設計圖表列印模組

列印的時候,需要自己在列印原件上進行圖形的繪製,這乙個是比較複雜的除錯過程,開始總是想著是否可以把控制項列印出來就ok,可是這種操作,一旦介面遮擋,就列印不出實際的效果了,所以只好類似繪圖一樣,使用自定義繪製方式。

這樣我計算好每個控制項的大小尺寸(包括lable控制項、曲線圖表控制項),然後挨著繪製即可,主要**如下所示。

好了,整個曲線報表的顯示效果及實現思路及部分核心**,都已經介紹完畢了,在整個過程中,除了經驗外,我覺得最重要的就是要細心、耐心及用心,專案開發就是把各種技巧、各種思路都集中起來,才可以快速高效的開發出高質量、客戶反映好的專案出來。

Winform開發框架之資料曲線報表

在專案開發中,往往會碰到一些非常規的需求,每次碰到這種情況,都需要花費時間來整理自己的思路,然後參考網路上其他人的實現方式或者作法,有時候可以找到一些相同的模組進行改進即可符合需求,但往往很多是需要自己潛心研究,然後提煉優化,雖然探索過程還是比較開心,不過時間肯定是需要花不少的。我每次碰到這種情況,...

Winform開發框架之介紹

框架已經正式改名為 yeswin開發框架,最新資料請前往 yeswinform 簡介 yes快速開發平台框架 yesdotnet.com winform開發框架,儘量減少程式設計師在介面中的 量和工作量,model自動生成,介面以及控制項自動生成,簡單的邏輯自動生成。自動生成的介面已經實現簡單邏輯增...

Winform開發框架之資料訪問層的設計

前面介紹過,該winform開發框架支援多種資料庫的訪問,只需要對配置進行修改即可切換,如下圖所示。其中我們可以看到,裡面有幾種資料訪問層的相關資料,大致知道是通過同一的idal資料訪問層介面派生出幾個對應不同資料庫的操作層,由業務邏輯層bll進行相應的呼叫,但是具體細節從上圖並不能了解到。其實他們...