在每页上打印标题c#

时间:2014-10-23 13:41:34

标签: c# printing

我有5个索引的列表,我想在新页面打印标题,我写什么,所以它打印在下一页?

list<> // 5 indices

void printDocument_PrintPage(object sender, PrintPageEventArgs e)
{
    Graphics graphic = e.Graphics;

    float fontHeight = font.GetHeight();

    int startX = 10;
    int startY = 10;

    for (int i = 0; i < list.Count; i++)
    {
        graphic.DrawString(list[i].Title, new Font("Courier New", 18), new SolidBrush(Color.Black), startX, startY);
    }
}

2 个答案:

答案 0 :(得分:0)

您必须维护一个实例变量,该变量指向要显示的列表中项目的当前索引,并在每次打印页面时将其递增。

int currIndex = 0;

void printDocument_PrintPage(object sender, PrintPageEventArgs e)
{
    Graphics graphic = e.Graphics;

    float fontHeight = font.GetHeight();

    int startX = 10;
    int startY = 10;

    graphic.DrawString(list[currIndex++].Title, new Font("Courier New", 18), new SolidBrush(Color.Black), startX, startY);
    if(currIndex == list.Count)
    {
        e.HasMorePages = false;
        currIndex = 0;
    } 
    else 
    {
        e.HasMorePages = true;
    }
}

答案 1 :(得分:0)

printDocument对象为每个页面调用相同的PrintPage()方法。如果您希望在不同页面上显示不同的内容,则需要存在于该方法之外的代码来存储当前状态,并且需要方法中的代码来检查该状态并根据您在方法外部存储的状态继续/继续打印。

如果您在PrintPage()中有说明打印标题,则会打印标题。故事结束。