我正在使用基于c#windows的应用程序。[Visual Studio 2010]
因为我试图打印账单。
我已使用e.Graphics.Drawstring
形成该帐单。
在这里它向我展示了包含所有适当数据的printpreview。
但是,当我打印出那个printpreview时,它没有在账单中显示我的项目。[打印预览的特定部分。其他数据显示]。
我的代码如下:
e.Graphics.DrawString("Amount", drawFont, Brushes.Black, new RectangleF(tempX + 600, tempY, dataGridView1.Columns[0].Width, dataGridView1.Rows[1].Height), str);
while (i < dataGridView1.Rows.Count-1)
{
if (height > e.MarginBounds.Height)
{
height = 100;
width = 100;
e.HasMorePages = true;
return;
}
height += dataGridView1.Rows[i].Height;
e.Graphics.DrawString((idInCol).ToString(), drawFont, Brushes.Black, new RectangleF(tempX, ((i*22)+(tempY+25)), dataGridView1.Columns[0].Width, dataGridView1.Rows[0].Height), str);
e.Graphics.DrawString(dataGridView1.Rows[i].Cells[2].FormattedValue.ToString().Trim(), drawFont, Brushes.Black, new RectangleF(tempX + 30, ((i * 22) + (tempY +25)), 500, dataGridView1.Rows[0].Height), str);
e.Graphics.DrawString(dataGridView1.Rows[i].Cells[3].FormattedValue.ToString(), drawFont, Brushes.Black, new RectangleF(tempX + 400, ((i * 22) + (tempY +25)), dataGridView1.Columns[0].Width, dataGridView1.Rows[0].Height), drawFormat);
width += dataGridView1.Columns[0].Width;
e.Graphics.DrawString(dataGridView1.Rows[i].Cells[4].FormattedValue.ToString().Trim(), drawFont, Brushes.Black, new RectangleF(tempX + 500, ((i * 22) + (tempY +25)), dataGridView1.Columns[0].Width, dataGridView1.Rows[0].Height), drawFormat);
width += dataGridView1.Columns[0].Width;
e.Graphics.DrawString(dataGridView1.Rows[i].Cells[5].FormattedValue.ToString().Trim(), drawFont, Brushes.Black, new RectangleF(tempX + 600, ((i * 22) + (tempY +25)), dataGridView1.Columns[0].Width, dataGridView1.Rows[0].Height), drawFormat);
width += dataGridView1.Columns[0].Width;
idInCol++;
i++;
}
这是我的账单截图:
在我打印时,它没有向我显示账单细节。除了那个之外,其他所有数据都会显示在打印输出中。
我已粘贴代码(while循环),我从中获取该帐单详情(项目,序列号等)。
我的代码中是否有任何遗漏?
或
我在代码中做错了吗?
请帮帮我。
答案 0 :(得分:3)
我知道这是两个月大,你可能发现了这个错误或放弃了。
无论如何我在这里:我假设变量i
被声明为全局类。如果是这种情况,则需要在while循环完成后将i
重置为0.
要确认您需要重置i
,只需调试应用并在第二次进入该方法时检查i
值(真正的打印方式)。此外,如果你直接打印没有预览它应该工作。