TX Textcontrol 使用总结三——禁用右键、模版合并
一.Tx Textcontrol如何禁用右键快捷菜单?
==》
添加txContent_TextContextMenuOpening事件,实现方式如下所示:
private void txContent_TextContextMenuOpening(object sender, TextContextMenuEventArgs e)
        {
            e.Cancel = true;
        }
二.模版合并
1.在TxControl内容结尾处进行追加模版信息
如下所示:
int length = txContent.Text.Length;
this.txContent.Select(length, 0);
if (FilePath.Contains(".tx"))
  this.txContent.Selection.Load(FilePath, TXTextControl.StreamType.InternalFormat);
              else
                  this.txContent.Selection.Load(FilePath, TXTextControl.StreamType.MSWord);
2.在鼠标所在位置合并
实现方式如下:
/// <summary>
        /// 光标处添加模版
        /// </summary>
        /// <param name="bytes">模版信息</param>
        private void InsetTemplateToInputPosition(byte[] bytes)
        {
            if (bytes == null) return;
int input = this.txContent.InputPosition.TextPosition;
            PubHelper.Instance.CreateDir(Application.StartupPath + "\\temp");
            string path = Application.StartupPath + "\\temp\\" + Guid.NewGuid() + ".tx";
            try
            {
                path = Helper.Instance.ByteConvertWord(bytes, path);
                this.txContent.Selection.Load(path, TXTextControl.StreamType.InternalFormat);
            }
            catch
            {
                return;
            }
            finally
            {
                Helper.Instance.DeleteFile(path);
            }
        }
--------------------------------辅助方法如下所示-----------------------
/// <summary>
        /// word文件转换二进制数据(用于保存数据库)
        /// </summary>
        /// <param name="wordPath">word文件路径</param>
        /// <returns>二进制</returns>
        public byte[] WordConvertByte(string wordPath)
        {
            if (!File.Exists(wordPath))
            {
                return null;
            }
            byte[] bytContent = null;
            System.IO.FileStream fs = null;
            System.IO.BinaryReader br = null;
            try
            {
                fs = new FileStream(wordPath, System.IO.FileMode.Open);
                br = new BinaryReader((Stream)fs);
                bytContent = br.ReadBytes((Int32)fs.Length);
                fs.Close();
                br.Close();
            }
            catch
            {
                fs.Close();
                br.Close();
                return null;
            }
            return bytContent;
        }
/// <summary>
        ///二进制数据转换为word文件
        /// </summary>
        /// <param name="data">二进制数据</param>
        /// <param name="fileName">word文件名</param>
        /// <returns>word保存的相对路径</returns>
        public string ByteConvertWord(byte[] data, string fileName)
        {
            if (data == null) return string.Empty;
FileStream fs = null;
            BinaryWriter br = null;
            try
            {
                fs = new FileStream(fileName, FileMode.OpenOrCreate);
                br = new BinaryWriter(fs);
                br.Write(data, 0, data.Length);
                br.Close();
                fs.Close();
            }
            catch
            {
                br.Close();
                fs.Close();
                return string.Empty;
            }
            return fileName;
        }
/// <summary>
        /// 删除指定的文件
        /// </summary>
        /// <param name="fileName">文件路径+名称</param>
        public void DeleteFile(string fileName)
        {
            if (File.Exists(fileName)) File.Delete(fileName);
        }
3.换页合并模版(合并模版时内容不满一页的直接进入下一页)
实现方式如下:
int length = txContent.Text.Length;
this.txContent.InputPosition = new TXTextControl.InputPosition(length,
                TXTextControl.TextFieldPosition.OutsideTextField);
this.txContent.Sections.Add(TXTextControl.SectionBreakKind.BeginAtNewPage);
            this.txContent.Select(this.txContent.GetPages()[this.txContent.Pages - 1].Start + length, 0);
LoadTx();
==》
private void LoadTx()
        {
            if (FilePath.Contains(".tx"))
                this.txContent.Selection.Load(FilePath, TXTextControl.StreamType.InternalFormat);
            else
                this.txContent.Selection.Load(FilePath, TXTextControl.StreamType.MSWord);
        }
public void CombineTxToNextPage(TextControl control, string filePath)
{
            if (!File.Exists(filePath)) return;
            int length = control.Text.Length;
            control.InputPosition = new TXTextControl.InputPosition(length,
                TXTextControl.TextFieldPosition.OutsideTextField);
            control.Sections.Add(TXTextControl.SectionBreakKind.BeginAtNewPage);
            control.Select(control.GetPages()[control.Pages - 1].Start + length, 0);
            //使用 Selection.Load 方法加载第二个文档
            control.Selection.Load(filePath, TXTextControl.StreamType.InternalFormat);
        }
三.实例如下

using System;
using System.Windows.Forms;
using TXTextControl;
namespace CombineDocs
{
    public partial class Form1 : Form
    {
        #region load
        private string FilePath = "..\\..\\ok.tx";
public Form1()
        {
            InitializeComponent();
        }
private void LoadTx()
        {
            if (FilePath.Contains(".tx"))
                this.txContent.Selection.Load(FilePath, TXTextControl.StreamType.InternalFormat);
            else
                this.txContent.Selection.Load(FilePath, TXTextControl.StreamType.MSWord);
        }
private void Form1_Load(object sender, EventArgs e)
        {
           LoadTx();
        }
#endregion
private void 加载1月总结文档ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            int length = txContent.Text.Length;
            this.txContent.Select(length, 0);
LoadTx();
        }
private void 加载2月计划文档ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            int length = txContent.Text.Length;
this.txContent.InputPosition = new TXTextControl.InputPosition(length,
                TXTextControl.TextFieldPosition.OutsideTextField);
this.txContent.Sections.Add(TXTextControl.SectionBreakKind.BeginAtNewPage);
            this.txContent.Select(this.txContent.GetPages()[this.txContent.Pages - 1].Start + length, 0);
LoadTx();
        }
private void txContent_TextContextMenuOpening(object sender, TextContextMenuEventArgs e)
        {
            e.Cancel = true;
        }
    }
}
注意:此处只做Demo演示,不做代码规范处理......
TX Textcontrol 使用总结三——禁用右键、模版合并的更多相关文章
- 新版【CefSharp】 禁用右键菜单 43.00+
		
原文:新版[CefSharp] 禁用右键菜单 43.00+ 禁用右键菜单其实是很容易的.主就要是实现一个接口 IMenuHandler ,这个接口有一个 OnBeforeContextMenu 的方 ...
 - 【CefSharp】 禁用右键菜单 与 控制弹出窗口的方式(限版本39.0.0.1)
		
这周没什么时间,一开始就在忙一些CefSharp的事情,Win10的研究就放了下来,CefSharp的资料挺少的,但好在是开源的,可以我们便宜的折腾.因为两个的内容都不多,我就合成一篇文章啦. 这还里 ...
 - WebBrowser 禁用右键
		
禁用错误脚本提示 将 WebBrowser控件的 ScriptErrorsSuppressed 设为 true 禁用右键菜单 将 WebBrowser 的 IsWebBrowserContextMen ...
 - TX Textcontrol 使用总结六——常用属性设置
		
1.字体设置 Tx textcontrol字体设置以版本22为例,直接设置FontSize =int,字体大小将小于正常其他控件字体设置.应做如下处理(仅供参考) this.textControl1. ...
 - jquery禁用右键单击功能屏蔽F5刷新
		
1.禁用右键单击功能$(document).ready(function() { $(document).bind("contextmenu",function(e) { aler ...
 - jquery禁用右键、文本选择功能、复制按键的实现
		
同时适合IE.firefox.谷歌浏览器下适用,经过筛选代码如下 //禁用右键.文本选择功能.复制按键 $(document).bind(“contextmenu”,function(){return ...
 - JS input文本框禁用右键和复制粘贴功能的代码
		
代码如下: function click(e) { if (document.all) { ||||) { oncontextmenu='return false'; } } if (document ...
 - 禁止选择文本和禁用右键 v1.0
		
var zhonghao={ //绑定事件 myAddEvent: function(obj, sEvent, fn){if(obj.attachEvent){obj.attachEvent('on' ...
 - jquery禁用右键、文本选择功能、刷新
		
//禁用右键.文本选择功能.刷新 $(document).bind(“contextmenu”,function(){return false;}); $(document).bind(“select ...
 
随机推荐
- HDU 1392  凸包
			
Surround the Trees Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
 - poj2367 拓扑序
			
题意:有一些人他们关系非常复杂,一个人可能有很多后代,现在要制定一种顺序,按照前辈在后代前排列就行 拓扑序裸题,直接建边拓扑排序一下就行了. #include<stdio.h> #incl ...
 - android开源项目---developer篇
			
本文转载于:http://blog.csdn.net/likebamboo/article/details/19081209 主要介绍和Android开发工具和测试工具相关的开源项目. Buck fa ...
 - python课程
			
课程大纲 一.语言基础(5周) 数据类型 流程控制 模块 函数.迭代器.装饰器 递归.迭代.反射 面向对象编程 模拟人生游戏开发 二.网络编程(4周) Socket c/s编程.Twisted网络框架 ...
 - word2010插入奇数页 使奇偶页不同的问题
			
word2010版本,设计奇偶页不同时,遇到一个问题,就是在第一章最后插入分节符——奇数页时,会导致整个奇数页都为1.原因:①首先每一章的末尾都应该有分页符或者奇数页等分节符来分开每一章:②点击页码可 ...
 - background-position 用法详细介绍
			
语法: background-position : length || length background-position : position || position 取值: length : ...
 - WCF入门教程五[WCF的通信模式]
			
一.概述 WCF在通信过程中有三种模式:请求与答复.单向.双工通信.以下我们一一介绍. 二.请求与答复模式 描述: 客户端发送请求,然后一直等待服务端的响应(异步调用除外),期间处于假死状态,直到服务 ...
 - 螺旋矩阵 noip2014普及组
			
本题可以直接模拟填数字,也可以直接计算结果. 代码一:(这个代码,缺陷在于数组太大,浪费内存啊.另外,循环次数也不少.总之,时间空间的消耗都不小.) /*======================= ...
 - nginx  windows 版 创建windows 服务
			
使用的工具 Windows Service Wrapper 使用的指令 nginx -s top Windows Service Wrapper 工具的使用: 1. 定义xml 文件: 说明如下: ...
 - 当当网开源Dubbox,扩展Dubbo服务框架支持REST风格远程调用
			
当当网近日开源了Dubbox项目,可为Dubbo服务框架提供多项扩展功能,包括REST风格远程调用.Kryo/FST序列化等等. 当当网架构部和技术委员会架构师沈理向InfoQ中文站介绍了Dubbox ...