找回密码
 立即注册

QQ登录

只需一步,快速开始

maxjohy

注册会员

6

主题

14

帖子

48

积分

注册会员

积分
48
maxjohy
注册会员   /  发表于:2017-7-3 11:20  /   查看:3835  /  回复:8
TextControl.Append(Byte[], BinaryStreamType, AppendSettings),我在调用这个方法追加文档时,将AppendSettings设置成StartWithNewParagraph或者None时,观察TextControl.Lines.Count的数量是不变的,这样就导致我无法设置每个文档的第一页是从那行开始的,以下是个循环给TextControl追加文档代码:
for (int i = 0; i < _lstFileIndex.Count; i++)
                {
                    if (i == 0)
                    {
                        _lstFileIndex[i].StartLine = 1;
                        _lstFileIndex[i].StartPage = 1;
                        tc_Edit.Load(_lstFileIndex[i].Buffer, TXTextControl.BinaryStreamType.InternalUnicodeFormat);
                        _lstFileIndex[i].EndLine = tc_Edit.Lines.Count;
                        _lstFileIndex[i].EndPage = tc_Edit.Pages;
                    }
                    else
                    {
                        tc_Edit.Append(_lstFileIndex[i].Buffer, TXTextControl.BinaryStreamType.InternalUnicodeFormat, TXTextControl.AppendSettings.StartWithNewParagraph);
                        _lstFileIndex[i].StartLine = _lstFileIndex[i - 1].EndLine;
                        _lstFileIndex[i].StartPage = tc_Edit.Lines[_lstFileIndex[i].StartLine].Page;
                        _lstFileIndex[i].EndLine = tc_Edit.Lines.Count;
                        _lstFileIndex[i].EndPage = tc_Edit.Pages;
                    }
                }
第一次和第二次循环tc_Edit.Lines.Count值发生改变,第三次就不变了!

8 个回复

倒序浏览
gw0506
超级版主   /  发表于:2017-7-3 13:57:25
沙发
你把工程发过来吧,重现不了。
工程如果太大,就新建一个,就做这一件事。
回复 使用道具 举报
maxjohy
注册会员   /  发表于:2017-7-4 11:53:43
板凳
项目在压缩包里,麻烦看看,注意TextControl.Lines.Count这个值

TestTXControl.zip

92.33 KB, 下载次数: 101

回复 使用道具 举报
gw0506
超级版主   /  发表于:2017-7-4 12:33:37
地板
跟了一下,从第三次开始 listFileIndex[i].Buffer 就没有变化了,实际内容全是没有增加。Pages从第三次开始就成了8,后续几次Append并没有实际添加内容到textcontrol,所以Lines不变是正常的。
回复 使用道具 举报
maxjohy
注册会员   /  发表于:2017-7-4 13:45:08
5#
我试了下,创建了三个文件,三个文件的内容都不一样,Append追加第三个的时候TextControl.Lines.Count值不变,也就是内容没有追加到textcontrol中去,不知道为什么到三个文件追加不进去。
回复 使用道具 举报
gw0506
超级版主   /  发表于:2017-7-4 18:14:32
6#
感觉是bug。换了另一个append重载方法,Count是变化的。你可以试试。
已经反馈给厂商,有回复通知你。
回复 使用道具 举报
maxjohy
注册会员   /  发表于:2017-7-12 11:43:16
7#
gw0506 发表于 2017-7-4 18:14
感觉是bug。换了另一个append重载方法,Count是变化的。你可以试试。
已经反馈给厂商,有回复通知你。

你使用的Append方法加载的是什么类型的?我试了下,用FileStream,byte[],strPath这三种加载方式,TextControl.Lines.Count,在加载第三个的时候就不变了
回复 使用道具 举报
maxjohy
注册会员   /  发表于:2017-7-12 16:13:16
8#
gw0506 发表于 2017-7-4 18:14
感觉是bug。换了另一个append重载方法,Count是变化的。你可以试试。
已经反馈给厂商,有回复通知你。

这个问题也解决了,可以这样写:
this.tc_Edit.Append("\r\n", TXTextControl.StringStreamType.PlainText, TXTextControl.AppendSettings.None);
                        TXTextControl.LoadSettings LoadSettings = new TXTextControl.LoadSettings();
                        LoadSettings.LoadImages = true;
                        this.tc_Edit.Append(_lstFileIndex.Buffer, TXTextControl.BinaryStreamType.InternalUnicodeFormat, LoadSettings, TXTextControl.AppendSettings.StartWithNewParagraph);
在Append之前,先追加个\r\n,TextControl.Lines.Count值就会一直随着追加文件变动。

评分

参与人数 1金币 +1000 收起 理由
gw0506 + 1000

查看全部评分

回复 使用道具 举报
gw0506
超级版主   /  发表于:2017-7-12 16:45:12
9#
你这个是非常有价值的宝贵经验。学习了~~~
送你金币,表示感谢。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部