在很多文档管理的功能模块里面,我们往往需要对WORD稳定进行展示、编辑等处理,而如果使用微软word控件进行处理,需要安装WORD组件,而且接口使用也不见得简单易用,因此如果有第三方且不用安装Office的能够展示WORD及进行编辑,那是比较不错的选择,TX Text Control就是这样的控件,本文就是基于这个控件的使用,实现在文档管理项目中的应用。

1、TX Text Control的介绍及使用

TX Text Control是一款功能类似于 MS Word 的文字处理控件,包括文档创建、编辑、打印、邮件合并、格式转换、拆分合并、导入导出、批量生成等功能。广泛应用于企业文档管理,网站内容发布,电子病历中病案模板创建、病历书写、修改历史、连续打印、病案归档等功能的实现。这个控件主要的功能就是可以作为Word以及其他文档的编辑器使用,整体展示的效果非常贴近原生WORD的展示,是一款非常不错的控件套件。

在我较早的一篇随笔《文字处理控件TX Text Control的使用》里面,大概简单的介绍了这个控件的使用,而且我把这个版本的英文资源全部汉化并进行了编译使用,基本上所有的功能都是展示正常的中文了,这样更适合我们实际项目的使用了。

我们在VS工具栏里面加入对应的控件,可以看到有以下相关的控件对象可供使用,一般情况下我们使用TextControl,然后在其基础上创建其他RulerBar、ButtonBar、StatusBar即可,而如果我们需要合并数据(很常用)就需要加入MailMerge控件对象。

添加控件后,我们可以对控件的相关基础的复制、粘贴、剪切等操作可以直接利用控件的API即可实现。

我们这里主要目的是在WInform项目中集成该控件的使用,就不像上篇那样介绍使用它编写一个完整独立的Word处理那样了。

如下面就是把相关的控件拖动到自定义控件上的效果。

类代码如下所示:

    /// <summary>
/// 基于TxTextControl控件的自定义控件封装
/// </summary>
public partial class TextWordControl : XtraUserControl

另外功能按钮可以自定义,增加或者减少部分按钮功能,如下列表所示。

2、TX Text Control自定义控件的代码实现和使用

为了实现这个WORD编辑控件的一些按键操作,如全部选择(Ctrl+A)、查找(Ctrl+F)、替换(Ctrl+H)等基础操作,我们需要在控件代码中实现相关的按键事件处理,这样我们使用这些按键就可以直接调用控件的内置处理窗体了,具体代码如下所示。

    /// <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文档数据,我们存储在数据库里面一般使用的是二进制存储,因此还需要设置一个自定义控件的属性用来设置获取获取文档控件的数据的,具体代码如下所示。

        /// <summary>
/// 文档数据
/// </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);
}
}
}
}

然后再提供的接口函数,用来加载本地WORD文档的数据,具体代码如下所示。

        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文档的编辑显示处理的实际总结,希望能够给你提供灵感和帮助。

在项目中利用TX Text Control进行WORD文档的编辑显示处理的更多相关文章

  1. 利用POI操作不同版本号word文档中的图片以及创建word文档

    我们都知道要想利用java对office操作最经常使用的技术就应该是POI了,在这里本人就不多说到底POI是什么和怎么用了. 先说本人遇到的问题,不同于利用POI去向word文档以及excel文档去写 ...

  2. C# : 操作Word文件的API - (将C# source中的xml注释转换成word文档)

    这篇博客将要讨论的是关于: 如何从C#的source以及注释, 生成一份Word格式的关于各个类,函数以及成员变量的说明文档. 他的大背景如下...... 最近的一个项目使用C#, 分N个模块, 在项 ...

  3. PHP中利用DOM和simplxml读取xml文档

    实例  用DOM获取下列xml文档中所有金庸小说的书名,该xml文档所在位置为 ./books.xml: <?xml version="1.0" encoding=" ...

  4. 文字处理控件TX Text Control的使用

    这几天一直在研究TX Text Control的使用,由于这方面的资料相对比较少,主要靠下载版本的案例代码进行研究,以及官方的一些博客案例进行学习,使用总结了一些心得,特将其总结出来,供大家分享学习. ...

  5. 文字处理控件TX Text Control X10独家揭秘(一):数据源自动处理

    TX Text Control即将发布的X10版本,将升级重点还是放到了其比较优势的流式布局报表设计和生成上.慧都获得了来自其开发商Text Control GmbH公司的一手资料,迫不及待的为大家带 ...

  6. 使用python编写量子线路打印的简单项目,并使用Sphinx自动化生成API文档

    技术背景 该文章一方面从量子线路的打印着手,介绍了一个简单的python量子线路工程.同时基于这个简单的小工程,我们顺带的介绍了python的API文档自动化生成工具Sphinx的基本使用方法. 量子 ...

  7. 使用Word API打开Word文档 ASP.NET编程中常用到的27个函数集

    使用Word API(非Openxml)打开Word文档简单示例(必须安装Word) 首先需要引入参照Microsoft.Office.Interop.Word 代码示例如下: public void ...

  8. 如何批量删除word文档中的超级链接?

    有时候从网页上copy来的文章中,会带有非常多的链接,这些链接很烦人是吧?如何批量删除(一次性全部删除)word文章中的超链接呢? 有些朋友说,Ctrl+A全选文章,然后点击格式工具栏上的“清除格式” ...

  9. 文字处理TX Text Control X10独家揭秘(二):图像占位符合并

    在前面一篇文章<TX Text Control X10独家揭秘(一):数据源自动处理>中已经对即将发布的TX Text Control X10的数据源自动处理做了一些了解,接下来述说它的图 ...

随机推荐

  1. Java基础语法(一)<注释,关键字,常量,变量,数据类型,标识符,数据类型转换>

    从今天开始,记录学习Java的过程.要学习Java首先得有环境,至于环境的安装我就不说了,百度有很多教程,比如:http://jingyan.baidu.com/article/20095761904 ...

  2. Android打开其它应用程序

    PackageManager pm = getPackageManager(); Intent i = pm.getLaunchIntentForPackage(packageName); start ...

  3. 初次使用git配置以及git如何使用ssh密钥(将ssh密钥添加到github)

    初次安装git配置用户名和邮箱 初次安装git需要配置用户名和邮箱,否则git会提示:please tell me who you are. 你需要运行命令来配置你的用户名和邮箱: $ git con ...

  4. hdu2196Computer 树形DP

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2196 思路: 一看就是一道树形DP的题目,对于一个节点来说,到它的最远距离的路径可能来于子树,也可能来 ...

  5. hdu 1254 推箱子(搜索)

    我写的第一道感觉比较难的搜索 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1254 首先要推箱子的话要满足人能够在箱子旁边,而且人的对面也是可通的. ...

  6. 一个简单易用的容器管理平台-Humpback

    什么是Humpback? 在回答这个问题前,我们得先了解下什么的 Docker(哦,现在叫 Moby,文中还是继续称 Docker). 在 Docker-百度百科 中,对 Docker 已经解释得很清 ...

  7. jQuery插件ImgAreaSelect 实例讲解一(头像上传预览和裁剪功能)

    上一节随笔中,我们已经知道了关于jQuery插件ImgAreaSelect基本的知识:那么现在看一下实例: 首先,要知道我们应该实现什么功能? (1)图片能够实现上传预览功能 (2)拖拽裁剪图片,使其 ...

  8. 【JS中循环嵌套常见的六大经典例题+六大图形题,你知道哪几个?】

    首先,了解一下循环嵌套的特点:外层循环转一次,内层循环转一圈. 在上一篇随笔中详细介绍了JS中的分支结构和循环结构,我们来简单的回顾一下For循环结构: 1.for循环有三个表达式,分别为: ①定义循 ...

  9. git常用命令记录

    配置本地仓库 git config --global user.name.git config --global user.email 查看配置详情 git config -l 初始仓库 git in ...

  10. OBS实现直播解决方案【html实现直播】

    项目的需要,要整一个视频直播,但又不想在其他平台那种直播室盗链展示,那我就直接用播放器来实现rtmp流媒体服务器推流吧!没废话,走起 1.你要有一个媒体服务器,暂时用[盘古云],这个还好,算是不错的平 ...