資源簡介
一、應用場景與出發點
同一個系統中,為了解決不同的客戶可能需要設計不同的單據打印模板,實現此方法可能是:
1、設計不同的自帶RDLC報表文件,根據當前客戶加載不同的報表并打印
2、GDI+繪圖 和 打印組件 ,不同的客戶創建不同的繪圖XML格式的模板內容
3、其他第三方組件
主要對比一下前兩種方法,第一種方法不好之處在于,不靈活,開發者必須地每個客戶制訂一個報表,不推薦采用。第二種方法,修改對應的模板內容就可以了, 模板內容可以是Xml文件,也可以是存放在數據庫中的Xml格式字符串。推薦采用這種方法。然后這種方法的也有一個棘手問題 :如何讓用戶快速、方便地設計打印模板,本示例就是為了解決這個問題。
二、實現思路與原理
功能概要:設計一個界面,支持用戶自由添加 要打印的項,文本,直線,圖片 等,并且可以方便改變打印項的 字體、顏色、粗細、位置,設計時支持效果預覽。
技術要點:GDI+繪圖、拖動控件、XML解析、自定義控件
三、相關類介紹
繪圖工具類:DrawHelper 實現 xml格式模板 與 打印項 之間進行互相轉換,在目標畫板中繪制
拖動工具類:WinHelper 實現控件的鼠標拖動,鍵盤移動
自定義控件:用于顯示文字的文本框 TextBoxExt、用于顯示直線的標簽 LabelExt
主窗體代碼:用于用戶操作,添加,刪除,編輯,打印項
詳細介紹請參照我的博文:http://de.cel.blog.163.com/blog/static/51451236201472215450939/

代碼片段和文件信息
using?System;
using?System.Collections.Generic;
using?System.ComponentModel;
using?System.Data;
using?System.Drawing;
using?System.Linq;
using?System.Text;
using?System.Windows.Forms;
namespace?test0820
{
????public?partial?class?CodeView?:?Form
????{
????????public?string?Code?{?get;?set;?}
????????public?CodeView(string?code)
????????{
????????????InitializeComponent();
????????????this.txtCode.Text?=?code;
????????}
????????private?void?btnOK_Click(object?sender?EventArgs?e)
????????{
????????????Code?=?txtCode.Text;
????????????this.DialogResult?=?DialogResult.OK;
????????}
????????private?void?btnCancel_Click(object?sender?EventArgs?e)
????????{
????????????this.DialogResult?=?DialogResult.Cancel;
????????}
????}
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????36352??2014-08-21?17:17??test0820\test0820\bin\Debug\test0820.exe
?????文件??????97792??2014-08-21?17:17??test0820\test0820\bin\Debug\test0820.pdb
?????文件??????14328??2014-08-21?17:16??test0820\test0820\bin\Debug\test0820.vshost.exe
?????文件???????6823??2014-08-21?17:16??test0820\test0820\bin\Debug\tpl.xm
?????文件????????774??2014-08-21?14:01??test0820\test0820\CodeView.cs
?????文件???????3813??2014-08-21?14:01??test0820\test0820\CodeView.Designer.cs
?????文件???????5814??2014-08-21?14:01??test0820\test0820\CodeView.resx
?????文件???????4916??2014-08-21?14:50??test0820\test0820\Controls\LabelExt.cs
?????文件???????1117??2014-08-21?11:31??test0820\test0820\Controls\LabelExt.Designer.cs
?????文件???????5066??2014-08-21?14:50??test0820\test0820\Controls\TextBoxExt.cs
?????文件???????1119??2014-08-21?10:14??test0820\test0820\Controls\TextBoxExt.Designer.cs
?????文件??????12542??2014-08-21?17:10??test0820\test0820\Form1.cs
?????文件??????11151??2014-08-21?16:33??test0820\test0820\Form1.Designer.cs
?????文件???????6020??2014-08-21?16:33??test0820\test0820\Form1.resx
?????文件??????16810??2014-08-21?17:11??test0820\test0820\Helpers\DrawHelper.cs
?????文件???????3757??2014-08-21?17:11??test0820\test0820\Helpers\WinHelper.cs
?????文件???????8661??2014-08-21?17:13??test0820\test0820\Helpers\xm
?????文件?????144381??2014-08-21?15:53??test0820\test0820\obj\Debug\ResolveAssemblyReference.cache
?????文件????????180??2014-08-21?17:17??test0820\test0820\obj\Debug\test0820.CodeView.resources
?????文件???????2663??2014-08-21?17:16??test0820\test0820\obj\Debug\test0820.csproj.FileListAbsolute.txt
?????文件????????908??2014-08-21?16:34??test0820\test0820\obj\Debug\test0820.csproj.GenerateResource.Cache
?????文件??????36352??2014-08-21?17:17??test0820\test0820\obj\Debug\test0820.exe
?????文件????????180??2014-08-21?17:17??test0820\test0820\obj\Debug\test0820.Form1.resources
?????文件??????97792??2014-08-21?17:17??test0820\test0820\obj\Debug\test0820.pdb
?????文件????????180??2014-08-21?17:17??test0820\test0820\obj\Debug\test0820.Properties.Resources.resources
?????文件????????489??2014-08-20?17:14??test0820\test0820\Program.cs
?????文件???????1348??2014-08-20?17:14??test0820\test0820\Properties\AssemblyInfo.cs
?????文件???????2866??2014-08-20?17:14??test0820\test0820\Properties\Resources.Designer.cs
?????文件???????5612??2014-08-20?17:14??test0820\test0820\Properties\Resources.resx
?????文件???????1093??2014-08-20?17:14??test0820\test0820\Properties\Settings.Designer.cs
............此處省略18個文件信息
- 上一篇:C# 軟件版本更新
- 下一篇:Visual C#.2010從入門到精通配套源程序
評論
共有 條評論