找回密码
 立即注册

QQ登录

只需一步,快速开始

yty

注册会员

14

主题

28

帖子

128

积分

注册会员

积分
128
yty
注册会员   /  发表于:2018-7-24 16:18  /   查看:3197  /  回复:5
Winform中拖入一TextControl,运行后删掉默认文字(此时文档内容为空),然后插入一个4行5列表格。此时,若我执行语句      textControl1.Selection=new Selection (3,2); 我期望的结果是选择了表格的第一行后两列。然而,tx只把插入点定位在了第一行第四列(即插入点3处),选区的长度仍为0。通过调试也可以发现,我执行完 textControl1.Selection=new Selection (3,2); 后立即打印当前Selection.Length,结果是0。这个bug如何避免?或者说,如何用代码执行选择第一行后两列这个操作?


5 个回复

倒序浏览
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2018-7-24 18:04:27
沙发
您好,测试以下代码可以实现功能,请参考

  1.             Table tb = _textControl.Tables.GetItem(0);
  2.             int start=0,length=0;
  3.             foreach (TableCell cell in tb.Cells)
  4.             {

  5.                 if (cell.Row == 2 && cell.Column == 2)
  6.                     start=cell.Start;
  7.                 if (cell.Row == 2 && cell.Column == 4)
  8.                     length = cell.Start+cell.Length-start;
  9.             }
  10.             _textControl.Selection = new TXTextControl.Selection(start,length);
复制代码
回复 使用道具 举报
yty
注册会员   /  发表于:2018-7-24 18:21:36
板凳
本帖最后由 yty 于 2018-7-24 18:22 编辑
Richard.Ma 发表于 2018-7-24 18:04
您好,测试以下代码可以实现功能,请参考

我要选择最后两列,不是中间的两列


或者你提供的代码不要变,表格建成4列的,执行完选区长度还是0
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2018-7-25 11:32:48
地板
tx提供了表格select方法来做这个操作,如下代码可以对4×4的表格中的第二行三四列进行选中

  1.             Table tb = _textControl.Tables.GetItem(0);
  2.             tb.Select(2, 3, 2, 4);
复制代码
回复 使用道具 举报
yty
注册会员   /  发表于:2018-7-25 13:08:01
5#
Richard.Ma 发表于 2018-7-25 11:32
tx提供了表格select方法来做这个操作,如下代码可以对4×4的表格中的第二行三四列进行选中

经测试可以。所以如果我之前有一个Selection,正好选择了表格的一部分,后面我想恢复这个选区,那只能手动换算选区对应的单元格坐标了吗?
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2018-7-25 17:21:17
6#
是的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部