TextControl 20.0中没有提供直接合并的接口(24.0提供了),在这里列出封装的合并代码。
/// <summary>
/// 合并单元格,该方法仅在TextControl 20.0的版本中使用,在24.0中已经提供相应的API
/// </summary>
/// <param name="textControl">使用的TextControl控件</param>
/// <param name="table">table控件</param>
/// <param name="startRow">起点横坐标,索引从1开始</param>
/// <param name="startCol">起点纵坐标,索引从1开始</param>
/// <param name="endRow">终点横坐标,索引从1开始</param>
/// <param name="endCol">终点纵坐标,索引从1开始</param>
private void MergeCells(TextControl textControl, TXTextControl.Table table, int startRow, int startCol, int endRow, int endCol)
{
if (null == textControl || null == table)
return;
//起始位置一定要在终点位置的右下位置
if (startRow > endRow || startCol > endCol)
return;
var cellstart = table.Cells.GetItem(startRow, startCol);
var cellend = table.Cells.GetItem(endRow, endCol);
//1 正向设置Length
//textControl.Selection.Start = cellstart.Start - 1;
//textControl.Selection.Length = cellend.Start - cellstart.Start + 1;
//2 反向设置Length
textControl.Selection.Start = cellend.Start - 1;
textControl.Selection.Length = cellstart.Start - cellend.Start;
table.MergeCells();
textControl.Selection.Length = 0;//清空当前选中
}
//设置每一行的最小行高, 行高单位twips, twips *96 /1440 = 像素
public static void SetMinRowHeight(this TXTextControl.Table table, int minHeight)
{
if (null == table)
return;
foreach (TXTextControl.TableRow row in table.Rows)
{
row.MinimumHeight = minHeight; // 单位是twips
}
}
注
正向索引在有些情况下会失效,具体原因与其接口实现有关,没有源码可供参考,不知其原因;反向设置Length可以正常合并。