C#有更多的页面让我很难理解它

C#有更多的页面让我很难理解它,c#,C#,这个代码怎么了 一旦它到达HasMorePages它就会在该行上循环 private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) { while (i<10) { e.Graphics.DrawString("Onga Bonga", new Font("tahoma", 12), Brushes.Black, 30, 3

这个代码怎么了

一旦它到达
HasMorePages
它就会在该行上循环

private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) {
    while (i<10)
    {
        e.Graphics.DrawString("Onga Bonga", new Font("tahoma", 12), Brushes.Black, 30, 30*i);

        if(i==5)
           break;

        i++;
    }

    e.HasMorePages = (i < 10);
}
private void printDocument1\u PrintPage(对象发送者,System.Drawing.Printing.PrintPageEventArgs e){
而(i
private int m_myPageIndex=0;
私有void printDocument1_PrintPage(对象发送方,System.Drawing.Printing.PrintPageEventArgs e)
{
开关(m_myPageIndex)
{
案例0://打印第一页

对于(int i=0;i当您到达第二页时,条件
i==5
将再次为真,循环将在写出一行后结束,但不增加变量
i
。它将继续在一页又一页上写入该行

获取开始的索引,并计算当前页面的最后一个索引。此外,在增加变量后进行检查,否则将重复第一页的最后一项作为第二页的第一项:

private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e){
  int last = i + 5;
  while (i<10) {
    e.Graphics.DrawString("Onga Bonga", new Font("tahoma", 12), Brushes.Black, 30, 30*i);
    i++;
    if (i > last) break;
  }
  e.HasMorePages = (i < 10);
}
private void printDocument1\u PrintPage(对象发送者,System.Drawing.Printing.PrintPageEventArgs e){
int last=i+5;
当我最后一次休息时;
}
e、 HasMorePages=(i<10);
}

因为你在i==5处中断?所以iso如果我想在一页上打印5行,在另一页上打印5行,我怎么能提前做呢?因为我是新手。第一:最好用好名字定义变量,比如
linesPerPage=5
totalinesprint=0
currentLineOnPage++
,一旦你有了它,代码就会写下它的代码我将永远保持可读性。好的,我将从现在开始记住这一点。这是不公平的。今天我第二次失去了一个被接受的答案(为什么?)。但无论如何……好答案。
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e){
  int last = i + 5;
  while (i<10) {
    e.Graphics.DrawString("Onga Bonga", new Font("tahoma", 12), Brushes.Black, 30, 30*i);
    i++;
    if (i > last) break;
  }
  e.HasMorePages = (i < 10);
}