KeepWith выдает ссылку на объект, не установленную на экземпляр объекта

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

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

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


person Lee Grindon    schedule 26.07.2011    source источник


Ответы (2)


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

person I liked the old Stack Overflow    schedule 26.07.2011
comment
Огромное спасибо за лучшее понимание использования KeepWith. - person Lee Grindon; 26.07.2011
comment
Извините, но моя репутация ниже 15, и это не позволит мне :( - person Lee Grindon; 26.07.2011
comment
Почему минус? Первый минус за 5 лет - и без отзывов. Как я могу улучшить ответ? - person I liked the old Stack Overflow; 28.07.2016
comment
Следует также упомянуть, что вам нужно будет проверить оставшиеся строки при использовании KeepWith. У меня возникло исключение, когда у меня осталась только 1 строка, но я назвал KeepWith = 2. Понижение кажется немного резким, не вижу ничего плохого. - person Vincent P; 23.08.2016

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

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

rowA.KeepWith = 2;

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

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

person MeanJerry    schedule 14.01.2019