zoukankan      html  css  js  c++  java
  • 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演示,不做代码规范处理......

    博客内容主要用于日常学习记录,内容比较随意,如有问题,还需谅解!!!
  • 相关阅读:
    实现mypwd
    2019-2020-2 20175310奚晨妍《网络对抗技术》Exp9 Web安全基础
    2019-2020-2 20175310奚晨妍《网络对抗技术》Exp8 Web基础
    2019-2020-2 20175310奚晨妍《网络对抗技术》Exp7 网络欺诈防范
    2019-2020-2 20175310奚晨妍《网络对抗技术》Exp6 MSF基础应用
    2019-2020-2 20175310奚晨妍《网络对抗技术》Exp5 信息搜集与漏洞扫描
    2019-2020-2 20175310奚晨妍《网络对抗技术》Exp4 恶意代码分析
    2019-2020-2 20175310奚晨妍《网络对抗技术》Exp3 免杀原理与实践
    2019-2020-2 20175310奚晨妍《网络对抗技术》Exp1+ 逆向进阶
    2019-2020-2 20175310奚晨妍《网络对抗技术》Exp2 后门原理与实践
  • 原文地址:https://www.cnblogs.com/YYkun/p/5662419.html
Copyright © 2011-2022 走看看