打印一个连接的字符串

本文关键字:连接 字符串 一个 打印 | 更新日期: 2023-09-27 18:04:18

我在用printdocument方法打印字符串时遇到了很多麻烦。

我有一个字符串形式的无效条目的报告。我通过在无效条目的forloop中连接条目来构建这个字符串。它看起来像这样

foreach(Error entry in ErrorEntries)
   reportString += entry.ToString();

现在我从printdocumen t方法访问这个字符串(它是一个单例)。问题是字符串有大约300个条目,所以不能放在一个页面上。

假设它打印前30条记录。我对e.HasMorePages = true命令有麻烦,据我所知,它重新运行rpintdocument1方法。如果是这种情况,那么该方法将再次从上到下打印报告字符串,并在第30条记录处停止。

是否有一种方法可以删除我刚刚从reportSummary字符串中打印的行,以便下次printdocument方法运行时,它不会打印字符串的相同内容(开始30条记录)?

打印一个连接的字符串

您可以做的是在您的printdocument方法所在的类中使用一个字段来存储到目前为止您已经成功打印的记录数量:

编辑:更新示例代码以匹配您的情况

class YourClass {
  private int charactersPrinted = 0;
  ...
  private void printdocument(object sender, PrintPageEventArgs ev) {
    var charactersDoneThisPage = 
      this.PrintReportStringPart(reportString.Substring(charactersPrinted));
    charactersPrinted += charactersDoneThisPage; // Number of characters you managed to print this page
    if (charactersPrinted < reportString.Length) {
      ev.HasMorePages = true;
    } else {
      ev.HasMorePages = false;
    }
  }
  // Prints the string to the page
  // Returns the number of characters it was actually able to print
  private int PrintReportStringPart(string reportStringPart) {
    // Print the reportStringPart however you're already doing it
    //  filling the page
    return charactersDoneThisPage;
  }
}

不连接单个字符串,而是将错误列表传递给您的print方法,并保留您需要打印的第一个记录的索引…这样,下次调用print page方法时,您将从上次打印(+1)

的位置开始。