在很多文檔管理的功能模塊里面,我們往往需要對WORD穩(wěn)定進行展示、編輯等處理,而如果使用微軟word控件進行處理,需要安裝WORD組件,而且接口使用也不見得簡單易用,因此如果有第三方且不用安裝Office的能夠展示WORD及進行編輯,那是比較不錯的選擇,TX Text Control就是這樣的控件,本文就是基于這個控件的使用,實現(xiàn)在文檔管理項目中的應用。
1、TX Text Control的介紹及使用
TX Text Control是一款功能類似于 MS Word 的文字處理控件,包括文檔創(chuàng)建、編輯、打印、郵件合并、格式轉換、拆分合并、導入導出、批量生成等功能。廣泛應用于企業(yè)文檔管理,網站內容發(fā)布,電子病歷中病案模板創(chuàng)建、病歷書寫、修改歷史、連續(xù)打印、病案歸檔等功能的實現(xiàn)。這個控件主要的功能就是可以作為Word以及其他文檔的編輯器使用,整體展示的效果非常貼近原生WORD的展示,是一款非常不錯的控件套件。
在我較早的一篇隨筆《文字處理控件TX Text Control的使用》里面,大概簡單的介紹了這個控件的使用,而且我把這個版本的英文資源全部漢化并進行了編譯使用,基本上所有的功能都是展示正常的中文了,這樣更適合我們實際項目的使用了。
我們在VS工具欄里面加入對應的控件,可以看到有以下相關的控件對象可供使用,一般情況下我們使用TextControl,然后在其基礎上創(chuàng)建其他RulerBar、ButtonBar、StatusBar即可,而如果我們需要合并數(shù)據(jù)(很常用)就需要加入MailMerge控件對象。
添加控件后,我們可以對控件的相關基礎的復制、粘貼、剪切等操作可以直接利用控件的API即可實現(xiàn)。
我們這里主要目的是在WInform項目中集成該控件的使用,就不像上篇那樣介紹使用它編寫一個完整獨立的Word處理那樣了。
如下面就是把相關的控件拖動到自定義控件上的效果。
類代碼如下所示:
/// <summary> /// 基于TxTextControl控件的自定義控件封裝 /// </summary> public partial class TextWordControl : XtraUserControl
另外功能按鈕可以自定義,增加或者減少部分按鈕功能,如下列表所示。
2、TX Text Control自定義控件的代碼實現(xiàn)和使用
為了實現(xiàn)這個WORD編輯控件的一些按鍵操作,如全部選擇(Ctrl+A)、查找(Ctrl+F)、替換(Ctrl+H)等基礎操作,我們需要在控件代碼中實現(xiàn)相關的按鍵事件處理,這樣我們使用這些按鍵就可以直接調用控件的內置處理窗體了,具體代碼如下所示。
/// <summary> /// 基于TxTextControl控件的自定義控件封裝 /// </summary> public partial class TextWordControl : XtraUserControl { public TextWordControl() { InitializeComponent(); InitEvent(); } /// <summary> /// 處理控件的事件 /// </summary> private void InitEvent() { Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("zh-CN"); Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("zh-CN"); this.textControl1.KeyDown += textControl1_KeyDown; } void textControl1_KeyDown(object sender, KeyEventArgs e) { HandleKeyDownEvent(e); } private void HandleKeyDownEvent(KeyEventArgs e) { switch (e.KeyCode) { case Keys.Insert: if (e.Control || e.Alt || e.Shift) break; //插入按鍵操作 textControl1.InsertionMode = textControl1.InsertionMode == TXTextControl.InsertionMode.Insert ? TXTextControl.InsertionMode.Overwrite : TXTextControl.InsertionMode.Insert; break; case Keys.A: if (!e.Control || e.Alt || e.Shift) break; // Ctrl-A: 全選操作 textControl1.SelectAll(); break; case Keys.F: if (!e.Control || e.Alt || e.Shift) break; // Ctrl-F: 查找操作 textControl1.Find(); break; case Keys.H: if (!e.Control || e.Alt || e.Shift) break; // Ctrl-H: 替換操作 textControl1.Replace(); break; } }
如查找和替換的內置對話框界面如下所示。
由于WORD文檔數(shù)據(jù),我們存儲在數(shù)據(jù)庫里面一般使用的是二進制存儲,因此還需要設置一個自定義控件的屬性用來設置獲取獲取文檔控件的數(shù)據(jù)的,具體代碼如下所示。
/// <summary> /// 文檔數(shù)據(jù) /// </summary> [Browsable(false)] public byte[] DocData { get { byte[] docData = null; textControl1.Save(out docData, TXTextControl.BinaryStreamType.MSWord); return docData; } set { if (value != null) { try { textControl1.Load(value, TXTextControl.BinaryStreamType.MSWord); } catch(Exception ex) { LogHelper.Error(ex); MessageDxUtil.ShowError(ex.Message); } } } }
然后再提供的接口函數(shù),用來加載本地WORD文檔的數(shù)據(jù),具體代碼如下所示。
public void LoadData(string file) { if (!string.IsNullOrEmpty(file)) { try { this.textControl1.Load(file, TXTextControl.StreamType.MSWord); } catch (Exception ex) { LogHelper.Error(ex); MessageDxUtil.ShowError(ex.Message); } } }
然后在文檔管理的功能模塊里面,對文檔的內容進行加載和保存即可,如下是文檔展示的項目實際效果。
編輯WORD文檔的界面效果如下所示,我們可以看到,這個控件里面展示的Word格式及內容都和WORD軟件展示的并無異樣,非常不錯,而且速度也很快,比DevExpress的RichTextEdit控件的效果和速度要好很很多。
以上就是應用TX Text Control進行WORD文檔的編輯顯示處理的實際總結,希望能夠給你提供靈感和幫助。
主要研究技術:代碼生成工具、會員管理系統(tǒng)、客戶關系管理軟件、病人資料管理軟件、Visio二次開發(fā)、酒店管理系統(tǒng)、倉庫管理系統(tǒng)等共享軟件開發(fā)
專注于Winform開發(fā)框架/混合式開發(fā)框架、Web開發(fā)框架、Bootstrap開發(fā)框架、微信門戶開發(fā)框架的研究及應用。
轉載請注明出處:
撰寫人:伍華聰 http://www.iqidi.com
在很多文檔管理的功能模塊里面,我們往往需要對WORD穩(wěn)定進行展示、編輯等處理,而如果使用微軟word控件進行處理,需要安裝WORD組件,而且接口使用也不見得簡單易用,因此如果有第三方且不用安裝Office的能夠展示WORD及進行編輯,那是比較不錯的選擇,TX Text Control就是這樣的控件,本文就是基于這個控件的使用,實現(xiàn)在文檔管理項目中的應用。
1、TX Text Control的介紹及使用
TX Text Control是一款功能類似于 MS Word 的文字處理控件,包括文檔創(chuàng)建、編輯、打印、郵件合并、格式轉換、拆分合并、導入導出、批量生成等功能。廣泛應用于企業(yè)文檔管理,網站內容發(fā)布,電子病歷中病案模板創(chuàng)建、病歷書寫、修改歷史、連續(xù)打印、病案歸檔等功能的實現(xiàn)。這個控件主要的功能就是可以作為Word以及其他文檔的編輯器使用,整體展示的效果非常貼近原生WORD的展示,是一款非常不錯的控件套件。
在我較早的一篇隨筆《文字處理控件TX Text Control的使用》里面,大概簡單的介紹了這個控件的使用,而且我把這個版本的英文資源全部漢化并進行了編譯使用,基本上所有的功能都是展示正常的中文了,這樣更適合我們實際項目的使用了。
我們在VS工具欄里面加入對應的控件,可以看到有以下相關的控件對象可供使用,一般情況下我們使用TextControl,然后在其基礎上創(chuàng)建其他RulerBar、ButtonBar、StatusBar即可,而如果我們需要合并數(shù)據(jù)(很常用)就需要加入MailMerge控件對象。
添加控件后,我們可以對控件的相關基礎的復制、粘貼、剪切等操作可以直接利用控件的API即可實現(xiàn)。
我們這里主要目的是在WInform項目中集成該控件的使用,就不像上篇那樣介紹使用它編寫一個完整獨立的Word處理那樣了。
如下面就是把相關的控件拖動到自定義控件上的效果。
類代碼如下所示:
/// <summary> /// 基于TxTextControl控件的自定義控件封裝 /// </summary> public partial class TextWordControl : XtraUserControl
另外功能按鈕可以自定義,增加或者減少部分按鈕功能,如下列表所示。
2、TX Text Control自定義控件的代碼實現(xiàn)和使用
為了實現(xiàn)這個WORD編輯控件的一些按鍵操作,如全部選擇(Ctrl+A)、查找(Ctrl+F)、替換(Ctrl+H)等基礎操作,我們需要在控件代碼中實現(xiàn)相關的按鍵事件處理,這樣我們使用這些按鍵就可以直接調用控件的內置處理窗體了,具體代碼如下所示。
/// <summary> /// 基于TxTextControl控件的自定義控件封裝 /// </summary> public partial class TextWordControl : XtraUserControl { public TextWordControl() { InitializeComponent(); InitEvent(); } /// <summary> /// 處理控件的事件 /// </summary> private void InitEvent() { Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("zh-CN"); Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("zh-CN"); this.textControl1.KeyDown += textControl1_KeyDown; } void textControl1_KeyDown(object sender, KeyEventArgs e) { HandleKeyDownEvent(e); } private void HandleKeyDownEvent(KeyEventArgs e) { switch (e.KeyCode) { case Keys.Insert: if (e.Control || e.Alt || e.Shift) break; //插入按鍵操作 textControl1.InsertionMode = textControl1.InsertionMode == TXTextControl.InsertionMode.Insert ? TXTextControl.InsertionMode.Overwrite : TXTextControl.InsertionMode.Insert; break; case Keys.A: if (!e.Control || e.Alt || e.Shift) break; // Ctrl-A: 全選操作 textControl1.SelectAll(); break; case Keys.F: if (!e.Control || e.Alt || e.Shift) break; // Ctrl-F: 查找操作 textControl1.Find(); break; case Keys.H: if (!e.Control || e.Alt || e.Shift) break; // Ctrl-H: 替換操作 textControl1.Replace(); break; } }
如查找和替換的內置對話框界面如下所示。
由于WORD文檔數(shù)據(jù),我們存儲在數(shù)據(jù)庫里面一般使用的是二進制存儲,因此還需要設置一個自定義控件的屬性用來設置獲取獲取文檔控件的數(shù)據(jù)的,具體代碼如下所示。
/// <summary> /// 文檔數(shù)據(jù) /// </summary> [Browsable(false)] public byte[] DocData { get { byte[] docData = null; textControl1.Save(out docData, TXTextControl.BinaryStreamType.MSWord); return docData; } set { if (value != null) { try { textControl1.Load(value, TXTextControl.BinaryStreamType.MSWord); } catch(Exception ex) { LogHelper.Error(ex); MessageDxUtil.ShowError(ex.Message); } } } }
然后再提供的接口函數(shù),用來加載本地WORD文檔的數(shù)據(jù),具體代碼如下所示。
public void LoadData(string file) { if (!string.IsNullOrEmpty(file)) { try { this.textControl1.Load(file, TXTextControl.StreamType.MSWord); } catch (Exception ex) { LogHelper.Error(ex); MessageDxUtil.ShowError(ex.Message); } } }
然后在文檔管理的功能模塊里面,對文檔的內容進行加載和保存即可,如下是文檔展示的項目實際效果。
編輯WORD文檔的界面效果如下所示,我們可以看到,這個控件里面展示的Word格式及內容都和WORD軟件展示的并無異樣,非常不錯,而且速度也很快,比DevExpress的RichTextEdit控件的效果和速度要好很很多。
以上就是應用TX Text Control進行WORD文檔的編輯顯示處理的實際總結,希望能夠給你提供靈感和幫助。
主要研究技術:代碼生成工具、會員管理系統(tǒng)、客戶關系管理軟件、病人資料管理軟件、Visio二次開發(fā)、酒店管理系統(tǒng)、倉庫管理系統(tǒng)等共享軟件開發(fā)
專注于Winform開發(fā)框架/混合式開發(fā)框架、Web開發(fā)框架、Bootstrap開發(fā)框架、微信門戶開發(fā)框架的研究及應用。
轉載請注明出處:
撰寫人:伍華聰 http://www.iqidi.com
http://www.cnblogs.com/wuhuacong/p/7047602.html