【问题标题】:How do you avoid losing the formatting of text when populating a TXTextControl from a byte array?从字节数组填充 TXTextControl 时,如何避免丢失文本格式?
【发布时间】:2013-10-04 07:22:35
【问题描述】:

我有一些小的“模板”样式 TXTextControl 文档,我将它们组合起来构建一个大文档。

模板是在我的应用程序中使用 TXTextControl 创建的,内容使用 TXTextControl InternalFormat 作为字节数组存储在数据库中。

我检索每个模板文档并使用 Selection 类构建一个新文档来加载每个模板的内容,如下所示;

tx.Selection.Load(myContent, BinaryStreamType.InternalFormat);

myContent 是从数据库中读取的 Byte 数组。

大多数模板文档只有一行,但其中有一些选项卡已更改,并且可能居中、右对齐等。

我注意到的是,如果每个小文档都以换行符结尾(即用户在保存之前在文档中按回车键),则模板文档会正确插入。

如果没有换行符,制表符和对齐将丢失。如果“模板文档”多于一行,则只丢失最后一行的格式。

更糟糕的是,如果在模板文档的最后一个位置有一个 TextField,那么在这个模板文档之后插入到我的新文档中的所有内容都被插入,就好像它是 TextField 中的文本一样,使新文档看起来很糟糕。

是否可以从字节数组中向 TXTextControl InternalFormat 样式文本插入少量内容,并确保其插入与创建时完全相同?

或者,我可以强制我正在使用的字节数组正确终止 - 使用 CR.LF 或其他东西来强制它正确插入。

【问题讨论】:

    标签: winforms txtextcontrol


    【解决方案1】:

    我设法为此找到的唯一“解决方法”是在插入的文档之后追加一个新行。

    这仅在直接使用 TXTextControl.TextControl 对象构建文本时有效,而不是对选择对象的引用属于 TextControl 对象。

    这行得通;

    TXTextControl.TextControl tx = new TXTextControl.TextControl();
    tx.CreateControl();
    
    tx.Selection.Start = -1;
    tx.Selection.Text = System.Enviornment.NewLine;
    

    但是,将选择对象传递到进程中并传递它以在其选择对象中构建文档是行不通的。原始控件(及其选择)的格式保持不变,我猜这可能是有道理的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-28
      • 2018-05-27
      • 1970-01-01
      • 1970-01-01
      • 2015-04-05
      • 1970-01-01
      • 2020-05-29
      相关资源
      最近更新 更多