[英]MigraDoc - Table Border but no Cell/Row/Column Borders
我正在努力实施似乎应该是直截了当的事情,但运气不佳。 我需要一个 MigraDoc 表格来渲染表格边框,不包括中间的所有单元格:
我已经关注了这篇文章的评论:
有用的信息,但我还没有能够从中实施完整的修复? 在将表添加到该部分之前,我运行了以下代码:
table.Borders.Visible = true;
for (int i = 0; i < table.Rows.Count - 2; i++)
{
table.Rows[i].Borders.Bottom.Visible = false;
}
起初似乎它完成了这项工作......直到我遇到一个跟随下一页的表格......底行边框显然只为最底行呈现并且不考虑PageBreaks中间表。
当然必须有更好的方法来做到这一点?
编辑:我很欣赏这是一个老问题,但以防万一有人最终在这里寻找答案......
尝试使用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
设置this.table.Columns.Count
的前四个数字 - 例如:
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.