【问题标题】:KeepWith throws Object reference not set to an instance of an objectKeepWith 抛出未设置为对象实例的对象引用
【发布时间】:2011-07-26 12:35:02
【问题描述】:

希望有人可能遇到与此相同的问题并找到解决方案。

我正在尝试将表中的某些行设置为分组,这样如果一行进入下一页,其他行也将进入下一页。

我正在使用 PdfSharp 和 Migradoc 将行 KeepWith 属性设置为行的索引 我想保持依恋。

IE:

var row = myTable.AddRow();
var rowIndex = row.Index;

foreach (var term in terms)
{
  row = myTable.AddRow();

  if (term.name == "group")
  {
    row.KeepWith = rowIndex;
  }
}

当我尝试加载 pdf 文件时,我得到一个“对象引用未设置为对象实例” 抛出错误,无法弄清楚原因。任何帮助都会很棒。

【问题讨论】:

    标签: pdfsharp migradoc


    【解决方案1】:

    将 KeepWith 设置为要与当前行一起保留的后续行数。要将三行保持在一起,正确的值是 2(设置在组的第一行)。

    【讨论】:

    • 非常感谢您让我更好地了解 KeepWith 的用法
    • 对不起,我的声望低于 15 并且不允许我这样做:(
    • 为什么投反对票? 5 年后第一次投反对票 - 没有任何反馈。我该如何改进答案?
    • 还应该提到,在使用 KeepWith 时,您需要检查剩余的行。当我只剩下 1 行但调用 KeepWith = 2 时,我遇到了异常。 Downvote似乎有点苛刻,看不出有什么问题。
    【解决方案2】:

    我犯了一个错误,将 KeepWith 放在行的末尾以保持在一起。正如 Vive la déraison 所说,将 KeepWith 放在行的第一行以保持在一起。

    此外,为 KeepWith 值提供的 int 不包括设置它的行。因此,要将行 rowA、rowB 和 rowC 保持在一起,您可以设置:

    rowA.KeepWith = 2;
    

    如果您为表格的最后几行设置了 KeepWith,并且意外设置了值 +1(包括您设置它的行),您将收到相同的“未设置对象...”错误,因为您将 KeepWith 扩展得比表格行更长。

    一定会喜欢那些 Off-By-One 的错误。

    【讨论】:

      猜你喜欢
      • 2013-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-17
      • 2013-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多