1
我试图从列表框中获取所有值,然后打印值作为收据,我试图通过foreach循环获取列表框中的所有值,但在打印预览中,它只有1值显示。从c列表框中打印项目#
这里是我的代码:
foreach (object items in listBox1.Items)
{
Ticket tkt = new Ticket();
tkt.orders = items.ToString();
tkt.print();
}
,这里是我的代码从票务类:
PrintDocument pdoc = null;
String Name, Order,
public String orders
{
//set the person name
set { this.Order = value; }
//get the person name
get { return this.Order; }
}public Ticket(String Orders)
{
this.orders = Orders;
}
public void print()
{
PrintDialog pd = new PrintDialog();
pdoc = new PrintDocument();
PrinterSettings ps = new PrinterSettings();
Font font = new Font("Courier New", 15);
PaperSize psize = new PaperSize("Custom", 100, 200);
//ps.DefaultPageSettings.PaperSize = psize;
pd.Document = pdoc;
pd.Document.DefaultPageSettings.PaperSize = psize;
//pdoc.DefaultPageSettings.PaperSize.Height =320;
pdoc.DefaultPageSettings.PaperSize.Height = 820;
pdoc.DefaultPageSettings.PaperSize.Width = 520;
pdoc.PrintPage += new PrintPageEventHandler(pdoc_PrintPage);
DialogResult result = pd.ShowDialog();
if (result == DialogResult.OK)
{
PrintPreviewDialog pp = new PrintPreviewDialog();
pp.Document = pdoc;
result = pp.ShowDialog();
if (result == DialogResult.OK)
{
pdoc.Print();
}
}
}
void pdoc_PrintPage(object sender, PrintPageEventArgs e)
{
Graphics graphics = e.Graphics;
Font font = new Font("Courier New", 10);
float fontHeight = font.GetHeight();
int startX = 50;
int startY = 55;
int Offset = 40;
Offset = Offset + 20;
String Orders = this.orders;
graphics.DrawString("Orders :" + orders, new Font("Courier New", 10), new SolidBrush(Color.Black), startX, startY + Offset);
}
在此先感谢
也许for循环过得太快,那么你没看到那些前打印。 'ShowDialog'也可能会阻止for循环 –