KeepWith генерирует объектную ссылку, не установленную для экземпляра объекта - PullRequest
2 голосов
/ 26 июля 2011

Надеясь, что кто-то там мог иметь ту же проблему, что и этот, и нашел решение.

Я пытаюсь установить определенные строки в таблице для группировки, чтобы, если строка попала в следующуюстраница, остальные строки также перейдут на следующую страницу.

Я использую 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, я получаю ошибку «Ссылка на объект, не установленную для экземпляра объекта» и не могу понять, почему.Любая помощь будет отличной.

Ответы [ 2 ]

11 голосов
/ 26 июля 2011

Установите KeepWith на количество следующих строк, которые вы хотите сохранить с текущей строкой. Чтобы сохранить три строки вместе, правильное значение равно 2 (устанавливается в первой строке группы).

0 голосов
/ 14 января 2019

Я совершил ошибку, поместив KeepWith в конце строк, чтобы сохранить их вместе. Как сказал Vive la déraison, поместите KeepWith в первый ряд строк, чтобы сохранить их вместе.

Кроме того, int, предоставленный для значения KeepWith, НЕ включает строку, в которой он установлен. Таким образом, чтобы сохранить строки rowA, rowB и rowC вместе, вы должны установить:

rowA.KeepWith = 2;

Если вы устанавливаете KeepWith для последних строк таблицы и случайно устанавливаете значение +1 (включая строку, на которую вы его установили), вы получите ту же ошибку «Объект не установлен ...» , поскольку вы расширяете KeepWith дольше строк таблицы.

Должен любить эти ошибки Off-By-One.

...