表格中设置选区的bug
Winform中拖入一TextControl,运行后删掉默认文字(此时文档内容为空),然后插入一个4行5列表格。此时,若我执行语句 textControl1.Selection=new Selection (3,2); 我期望的结果是选择了表格的第一行后两列。然而,tx只把插入点定位在了第一行第四列(即插入点3处),选区的长度仍为0。通过调试也可以发现,我执行完 textControl1.Selection=new Selection (3,2); 后立即打印当前Selection.Length,结果是0。这个bug如何避免?或者说,如何用代码执行选择第一行后两列这个操作?您好,测试以下代码可以实现功能,请参考
Table tb = _textControl.Tables.GetItem(0);
int start=0,length=0;
foreach (TableCell cell in tb.Cells)
{
if (cell.Row == 2 && cell.Column == 2)
start=cell.Start;
if (cell.Row == 2 && cell.Column == 4)
length = cell.Start+cell.Length-start;
}
_textControl.Selection = new TXTextControl.Selection(start,length); 本帖最后由 yty 于 2018-7-24 18:22 编辑
Richard.Ma 发表于 2018-7-24 18:04
您好,测试以下代码可以实现功能,请参考
我要选择最后两列,不是中间的两列
或者你提供的代码不要变,表格建成4列的,执行完选区长度还是0
tx提供了表格select方法来做这个操作,如下代码可以对4×4的表格中的第二行三四列进行选中
Table tb = _textControl.Tables.GetItem(0);
tb.Select(2, 3, 2, 4); Richard.Ma 发表于 2018-7-25 11:32
tx提供了表格select方法来做这个操作,如下代码可以对4×4的表格中的第二行三四列进行选中
经测试可以。所以如果我之前有一个Selection,正好选择了表格的一部分,后面我想恢复这个选区,那只能手动换算选区对应的单元格坐标了吗? 是的
页:
[1]