mindrayguowei 发表于 2016-10-19 10:25:57

如何获取tablecell里面的二进制文件

我们的模板里面有两个table框, 用户会通过一些button事件把一些带格式的tx二进制文件自动导入到框里面, 导入的方式如下
_textControl.Selection.Load(content, BinaryStreamType.InternalFormat);

content是一个byte数组.

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

gw0506 发表于 2016-10-19 14:43:54

this.textControl1.Selection.Save(StreamType.InternalFormat);

gw0506 发表于 2016-10-19 14:44:14

this.textControl1.Selection.Save(StreamType.InternalFormat);

mindrayguowei 发表于 2016-10-19 16:34:39

这个方法差不多可以实现我要的功能, 但是还是有点小问题,保存的时候会把table框也保存出来, 我尝试了各种办法, 都没办法去掉.public byte[] GetFomattedTableCellValue(int tableId)
      {
            Table table = _textControl.Tables.GetItem(tableId);
            if (table == null) return null;

            TableCell tableCell = table.Cells.GetItem(1, 1);
            if (tableCell != null)
            {
                _textControl.Selection.Start = tableCell.Start;
                _textControl.Selection.Length = tableCell.Text.Trim().Length ;
               
                byte[] bytes = null;
                //_textControl.Selection.Save(out bytes,BinaryStreamType.InternalUnicodeFormat);
                _textControl.Selection.Save(StreamType.InternalUnicodeFormat);
                //_textControl.Save(StreamType.InternalUnicodeFormat);
                return bytes;
            }

            return null;
      }

gw0506 发表于 2016-10-19 16:57:44

应该是selection的问题,你试试调整一下start和length
_textControl.Selection.Start = tableCell.Start + 1;
_textControl.Selection.Length = tableCell.Text.Trim().Length - 1 ;

mindrayguowei 发表于 2016-10-20 18:43:34

本帖最后由 mindrayguowei 于 2016-10-20 19:27 编辑

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

这样会导致文本复制不全, 应该是trim的问题, 但是去掉trim也有问题.
有时候不会导入框, 有时候又会导入框.
这个究竟是怎么判断的? 和什么有关?

gw0506 发表于 2016-10-21 10:00:33

Selection 就是控制Start和Lenth。是不是选中了Cell也是看长度是多少。
把Trim去掉,试试这个
            this.textControl1.Selection.Start = cell.Start - 1;
            this.textControl1.Selection.Length = cell.Length;
页: [1]
查看完整版本: 如何获取tablecell里面的二进制文件