C# Listview Çıktı Alma Sayfalama Problemi
-
merhaba arkadaşlar c# hazırladığım bir uygulamada listview deki listeyi çıktı almam gerekiyor düzenlemiş olduğum kod sorunsuz olarak çıktı veriyor fakat satır sayısı 1. sayfayı aştığında işler karışıyor alttaki kodlarda ne gibi bir düzenleme yaparsam bu sorunu çözebilirim.
private void printDocument1_PrintPage(object sender, PrintPageEventArgs e) { //Yazı fontumu ve çizgi çizmek için fırçamı ve kalem nesnemi oluşturdum Font myFont = new Font("Calibri", 28); SolidBrush sbrush = new SolidBrush(Color.Black); Pen myPen = new Pen(Color.Black); //Bu kısımda ürün listesi yazısını ve çizgileri yazdırıyorum e.Graphics.DrawLine(myPen, 120, 120, 750, 120); e.Graphics.DrawString("ÜRÜN LİSTESİ", myFont, sbrush, 320, 125); e.Graphics.DrawLine(myPen, 120, 180, 750, 180); //Bu kısımda üst bilgileri yazdırıyorum e.Graphics.DrawLine(myPen, 120, 200, 750, 200); myFont = new Font("Calibri", 12); e.Graphics.DrawString("Tarih", myFont, sbrush, 140, 205); e.Graphics.DrawString("Bayi/Firma", myFont, sbrush, 220, 205); e.Graphics.DrawString("Ürün", myFont, sbrush, 400, 205); e.Graphics.DrawString("Adet", myFont, sbrush, 520, 205); e.Graphics.DrawString("Takas", myFont, sbrush, 595, 205); e.Graphics.DrawString("Patlak", myFont, sbrush, 670, 205); e.Graphics.DrawLine(myPen, 120, 228, 750, 228); int y = 240; //Yazıyı Sola Daya StringFormat SolFormat = new StringFormat(); SolFormat.Alignment = StringAlignment.Near; //Yazıyı Ortaya StringFormat OrtaFormat = new StringFormat(); OrtaFormat.Alignment = StringAlignment.Center; //listview verilerini oku foreach (ListViewItem lvi in lstArama.Items) { string cpatlak = lvi.SubItems[6].Text; string ctakas = lvi.SubItems[5].Text; string cadet = lvi.SubItems[4].Text; string curun = lvi.SubItems[3].Text; string cbayi = lvi.SubItems[2].Text; string ctarih = lvi.SubItems[1].Text; e.Graphics.DrawString(cpatlak, myFont, sbrush, 700, y, OrtaFormat); e.Graphics.DrawString(ctakas, myFont, sbrush, 615, y, OrtaFormat); e.Graphics.DrawString(cadet, myFont, sbrush, 535, y, OrtaFormat); e.Graphics.DrawString(curun, myFont, sbrush, 370, y, SolFormat); e.Graphics.DrawString(cbayi, myFont, sbrush, 220, y, SolFormat); e.Graphics.DrawString(ctarih, myFont, sbrush, 160, y, OrtaFormat); y += 20; } //En alt toplam miktarları yaz e.Graphics.DrawLine(myPen, 120, y, 750, y); e.Graphics.DrawString(lbltAdet.Text, myFont, sbrush, 535, y + 10, OrtaFormat); e.Graphics.DrawString(lbltTakas.Text, myFont, sbrush, 615, y + 10, OrtaFormat); e.Graphics.DrawString(lbltPatlak.Text, myFont, sbrush, 700, y + 10, OrtaFormat); } -
up
-
Graphicsle olacak ise benzemiyor bi report componenti kullansana
-
arkadaşlar yardımlarınız için teşekkürler problemimi bi şekilde çözdüm başkalarınada yardımı olur diye eklemek istedim.
int i = 0; private void printDocument1_PrintPage(object sender, PrintPageEventArgs e) { //Yazı fontumu ve çizgi çizmek için fırçamı ve kalem nesnemi oluşturdum Font Baslik = new Font("Arial", 12,FontStyle.Bold); Font AltBaslik = new Font("Arial", 12, FontStyle.Regular); SolidBrush sbrush = new SolidBrush(Color.Black); Pen myPen = new Pen(Color.Black); System.Drawing.Printing.PageSettings p = printDocument1.DefaultPageSettings; int x = 135, y = 135, say = lstArama.Items.Count; //Yazıyı Sola Daya StringFormat SolFormat = new StringFormat(); SolFormat.Alignment = StringAlignment.Near; //Yazıyı Ortaya StringFormat OrtaFormat = new StringFormat(); OrtaFormat.Alignment = StringAlignment.Center; //Bu kısımda üst bilgileri yazdırıyorum e.Graphics.DrawLine(myPen, p.Margins.Left, 120, p.PaperSize.Width - p.Margins.Right, 120); e.Graphics.DrawString("Tarih", Baslik, sbrush, 120, 125); e.Graphics.DrawString("Bayi/Firma", Baslik, sbrush, 205, 125); e.Graphics.DrawString("Ürün", Baslik, sbrush, 400, 125); e.Graphics.DrawString("Adet", Baslik, sbrush, 530, 125); e.Graphics.DrawString("Takas", Baslik, sbrush, 595, 125); e.Graphics.DrawString("Patlak", Baslik, sbrush, 670, 125); e.Graphics.DrawLine(myPen, p.Margins.Left, 148, p.PaperSize.Width - p.Margins.Right, 148); while (i < say) { x += 25; //listview deki kayıtları aldk yazdık her seferinde y koordinatını arttırdık e.Graphics.DrawString(lstArama.Items[i].SubItems[1].Text, AltBaslik, sbrush, 100, x); e.Graphics.DrawString(lstArama.Items[i].SubItems[2].Text, AltBaslik, sbrush, 205, x); e.Graphics.DrawString(lstArama.Items[i].SubItems[3].Text, AltBaslik, sbrush, 370, x); e.Graphics.DrawString(lstArama.Items[i].SubItems[4].Text, AltBaslik, sbrush, 540, x); e.Graphics.DrawString(lstArama.Items[i].SubItems[5].Text, AltBaslik, sbrush, 615, x); e.Graphics.DrawString(lstArama.Items[i].SubItems[6].Text, AltBaslik, sbrush, 690, x); i++; //1 sayfayı geçiyorsa burası çalışacak if ((x + y + 20) > (p.PaperSize.Height + 60 - p.Margins.Bottom + 60)) { e.HasMorePages = true; break; } } //liste tamamlanmışsa if (i >= say) { e.HasMorePages = false; i = 0; //En alt toplam miktarları yaz e.Graphics.DrawLine(myPen, p.Margins.Left, x + 25, p.PaperSize.Width - p.Margins.Right, x + 25); e.Graphics.DrawString(lbltAdet.Text, AltBaslik, sbrush, 535, x + 25); e.Graphics.DrawString(lbltTakas.Text, AltBaslik, sbrush, 615, x + 25); e.Graphics.DrawString(lbltPatlak.Text, AltBaslik, sbrush, 690, x + 25); } }
Toplam Hit: 2488 Toplam Mesaj: 5
