C# 使用循环打印listview将打印同一行C上的所有行

C# 使用循环打印listview将打印同一行C上的所有行,c#,printing,C#,Printing,我尝试使用c从窗口表单打印收据,它在listview中只打印一行就可以了,但是当添加更多行时,它们都打印在纸张上的同一行上 如何让它正常打印,一行比另一行低 这是我使用的代码 for (int i = 0; i < listView1.Items.Count; i++) { int ii = 1; ii++; graphics.DrawString(" " + listView1.Items[i].SubI

我尝试使用c从窗口表单打印收据,它在listview中只打印一行就可以了,但是当添加更多行时,它们都打印在纸张上的同一行上

如何让它正常打印,一行比另一行低

这是我使用的代码

for (int i = 0; i < listView1.Items.Count; i++)
        {
            int ii = 1;
            ii++;

        graphics.DrawString("  " + listView1.Items[i].SubItems[0].Text + listView1.Items[i].SubItems[1].Text + listView1.Items[i].SubItems[2].Text + listView1.Items[i].SubItems[3].Text,  new Font("Arial Bold", 11),
                 new SolidBrush(Color.Black), startX, startY + Offset);
        }
        Offset = Offset + 20;
将线偏移=偏移+20放在for循环内,而不是放在闭合括号之后。当前,您的循环正在打印所有内容,完成后,您将增加偏移量

还可以使用Offset+=20使其更具可读性

另外,正如其他人建议您使用foreach循环而不是for循环,我不同意。for循环通常比foreach循环需要更少的内存,在这种情况下,for循环更合适

请提供信息

编辑:
让我撤销我在这个特殊案件中关于foreach和foreach的陈述。由于您的循环在每次迭代过程中多次访问数组元素,因此在本例中,foreach循环将比for循环快。

使用foreach循环迭代ListBox控件是一种更好的方法,因为您要遍历所有项:

foreach(ListViewItem item in listView1.Items)
{
        graphics.DrawString("  " + item.SubItems[0].Text + item.SubItems[1].Text + item.SubItems[2].Text + item.SubItems[3].Text,  new Font("Arial Bold", 11),
                 new SolidBrush(Color.Black), startX, startY + Offset);

        Offset = Offset + 20;
}

ii变量是用来做什么的?我想用ii来表示子项,但效果不太好,所以我删除了它,但忘了删除这一行,谢谢你指出它。非常感谢,伙计,不客气。别忘了给那些帮助你的答案投票: