找回密码
 立即注册

QQ登录

只需一步,快速开始

mindrayguowei

中级会员

122

主题

274

帖子

986

积分

中级会员

积分
986

活字格认证

QQ
mindrayguowei
中级会员   /  发表于:2016-10-19 10:25  /   查看:3159  /  回复:6
我们的模板里面有两个table框, 用户会通过一些button事件把一些带格式的tx二进制文件自动导入到框里面, 导入的方式如下
_textControl.Selection.Load(content, BinaryStreamType.InternalFormat);

content是一个byte数组.

现在有一个问题, 怎么把这个框里面的二进制文件再取出来?
我们现在只能取普通的text文本, 这样就没法带格式了.

6 个回复

倒序浏览
gw0506
超级版主   /  发表于:2016-10-19 14:43:54
沙发
  1. this.textControl1.Selection.Save(StreamType.InternalFormat);
复制代码
回复 使用道具 举报
gw0506
超级版主   /  发表于:2016-10-19 14:44:14
板凳
  1. this.textControl1.Selection.Save(StreamType.InternalFormat);
复制代码
回复 使用道具 举报
mindrayguowei
中级会员   /  发表于:2016-10-19 16:34:39
地板
这个方法差不多可以实现我要的功能, 但是还是有点小问题,保存的时候会把table框也保存出来, 我尝试了各种办法, 都没办法去掉.
  1. public byte[] GetFomattedTableCellValue(int tableId)
  2.         {
  3.             Table table = _textControl.Tables.GetItem(tableId);
  4.             if (table == null) return null;

  5.             TableCell tableCell = table.Cells.GetItem(1, 1);
  6.             if (tableCell != null)
  7.             {
  8.                 _textControl.Selection.Start = tableCell.Start;
  9.                 _textControl.Selection.Length = tableCell.Text.Trim().Length ;
  10.                
  11.                 byte[] bytes = null;
  12.                 //_textControl.Selection.Save(out bytes,BinaryStreamType.InternalUnicodeFormat);
  13.                 _textControl.Selection.Save(StreamType.InternalUnicodeFormat);
  14.                 //_textControl.Save(StreamType.InternalUnicodeFormat);
  15.                 return bytes;
  16.             }

  17.             return null;
  18.         }
复制代码
回复 使用道具 举报
gw0506
超级版主   /  发表于:2016-10-19 16:57:44
5#
应该是selection的问题,你试试调整一下start和length
  1. _textControl.Selection.Start = tableCell.Start + 1;
  2. _textControl.Selection.Length = tableCell.Text.Trim().Length - 1 ;
复制代码
回复 使用道具 举报
mindrayguowei
中级会员   /  发表于:2016-10-20 18:43:34
6#
本帖最后由 mindrayguowei 于 2016-10-20 19:27 编辑

还是有问题
_textControl.Selection.Length = tableCell.Text.Trim().Length - 1 ;

这样会导致文本复制不全, 应该是trim的问题, 但是去掉trim也有问题.
有时候不会导入框, 有时候又会导入框.
这个究竟是怎么判断的? 和什么有关?
回复 使用道具 举报
gw0506
超级版主   /  发表于:2016-10-21 10:00:33
7#
Selection 就是控制Start和Lenth。是不是选中了Cell也是看长度是多少。
把Trim去掉,试试这个
  1.             this.textControl1.Selection.Start = cell.Start - 1;
  2.             this.textControl1.Selection.Length = cell.Length;
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部