C# 使用循环打印listview将打印同一行C上的所有行
我尝试使用c从窗口表单打印收据,它在listview中只打印一行就可以了,但是当添加更多行时,它们都打印在纸张上的同一行上 如何让它正常打印,一行比另一行低 这是我使用的代码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
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来表示子项,但效果不太好,所以我删除了它,但忘了删除这一行,谢谢你指出它。非常感谢,伙计,不客气。别忘了给那些帮助你的答案投票: