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循環 –