我正在努力实现看起来应该是直接的东西,但运气不好。我需要一个MigraDoc表来呈现只有Table边框,不包括其间的所有单元格:
我已按照这篇文章发表评论:
How do you add a border around a table in MigraDoc?
有用的信息,但我还没有能够实现完整的修复? 我在表格添加到该部分之前运行以下代码:
table.Borders.Visible = true;
for (int i = 0; i < table.Rows.Count - 2; i++)
{
table.Rows[i].Borders.Bottom.Visible = false;
}
起初看起来它似乎完成了这项工作......直到我遇到下一页的表格...显然,底行边框仅针对最底行进行渲染,而不考虑PageBreaks mid -table。
当然必须有更好的方法吗?
答案 0 :(得分:1)
编辑:我很欣赏这是一个古老的问题,但是以防万一有人最终在这里寻找答案...
尝试使用SetEdge
选项。可以使用两种方法,具体取决于您是否知道要拥有多少个表行或表(静态内容),还是不知道(动态内容)。
选项1:静态表格内容
首先设置表格,使所有的列,单元格和行都存在,然后使用以下方式在表格中添加边框:
table.SetEdge(a, b, x, y, Edge.Box, BorderStyle.Single, 1, Colors.Black);
前四个数字a, b, x, y
表示要向其添加边框的表单元格,前两个数字是左上角的列,然后是行(在您的情况下为整个表的边框,应为0, 0
),后两个数字是右下角的列,然后是行(根据您的示例,这是3, 4
,假设标题是标题行)。
在Edge.Box
之后,选项为border style, border width, border color
。
然后您可以像往常一样在每个单元格或行之后添加任何额外的单独边框,以便按照示例在标题行的底部添加边框...
headerRow.Borders.Bottom.Width = 0.2;
headerRow.Borders.Bottom.Color = Colors.Black;
选项2:动态表格内容
如果您不知道表中有多少行或列,因为其内容是动态的,则可以使用this.table.Columns.Count
和this.table.Rows.Count
来设置SetEdge中的前四个数字,例如: / p>
table.SetEdge(0, 0, this.table.Columns.Count, this.table.Rows.Count, Edge.Box, BorderStyle.Single, 1, Colors.Black);
参考
有关更多信息,请参阅此帖子: https://forum.pdfsharp.net/viewtopic.php?f=2&t=3598
它也在MigraDoc示例中(搜索SetEdge)在这里: http://pdfsharp.net/wiki/HelloMigraDoc-sample.ashx