Vedr. udskrivning at et ListView.
Hej,Eer der en der har et eksempel, eller kan gi' et eksempel, på hvordan man printer dataen ud fra et listview.
Det skal være sådan at hvis der er flere data i listViewet end der kan stå på et A4 ark, så skal den automatisk hoppe over på side 2 og printe videre hvor den kom fra.
Jeg har prøvet mig lidt frem selv, så hvis i kan bruge nedenstående kode så er i velkommen:
private void button2_Click(object sender, System.EventArgs e)
{
try
{
PrintPreviewDialog printPreviewDialog1 = new PrintPreviewDialog();
printPreviewDialog1.Document = this.printDocument1 ;
printPreviewDialog1.FormBorderStyle = FormBorderStyle.Fixed3D ;
printPreviewDialog1.SetBounds(20, 20, this.Width, this.Height);
printPreviewDialog1.ShowDialog();
}
catch(Exception exp)
{
System.Console.WriteLine(exp.Message.ToString());
}
}
private int counter = 0;
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
float linesPerPage = 54;
float linesPerPageTmp = linesPerPage;
double TotalPages = listView1.Items.Count / linesPerPage;
TotalPages = System.Math.Ceiling(TotalPages);
int r=0;
string sRowDesign = "1";
for (r=1;r<=TotalPages;r++)
{
sRowDesign += "," + linesPerPage.ToString();
linesPerPageTmp = linesPerPageTmp + linesPerPage;
}
//MessageBox.Show(sRowDesign);
char[] sep = {','};
//Generere hvor mange rows der skal tælles for hver side.
String [] aRowDesign = sRowDesign.Split(sep);
this.Focus();
Font ManifestFont = new Font("Verdana", 12, FontStyle.Bold);
SolidBrush drawBrush = new SolidBrush(Color.Black);
if( counter <= TotalPages )
{
e.HasMorePages = true;
}
else
{
e.HasMorePages = false;
counter = 0; // counter ++ tæller den op til 1
}
counter ++;
try
{
int nWidth = printDocument1.PrinterSettings.DefaultPageSettings.PaperSize.Width;
int nHeight = printDocument1.PrinterSettings.DefaultPageSettings.PaperSize.Height;
RectangleF destRect = new Rectangle(0, 0, nWidth, nHeight);
Pen aPen = new Pen(Brushes.Black, 1);
// Skrifttypen.
//Font ManifestFont = new Font("Verdana", 12, FontStyle.Bold);
Font HeadLine = new Font("Verdana", 8, FontStyle.Bold);
Font NormalFont_Small = new Font("Verdana", 8, FontStyle.Regular);
Font NormalFont_Bold = new Font("Verdana", 12, FontStyle.Bold);
// Penselen
//SolidBrush drawBrush = new SolidBrush(Color.Black);
// Definere positionen (upper-left)
float DLine1_x1 = 20.0F;
float DLine1_y1 = 40.0F;
float DLine1_x2 = 790.0F;
float DLine1_y2 = 40.0F;
// Skriver teksterne til skærmen:
e.Graphics.DrawString((counter).ToString(), ManifestFont, drawBrush, new PointF(700.0F, 20.0F)); //Side tal.
e.Graphics.DrawString("Manifest", ManifestFont, drawBrush, new PointF(20.0F, 20.0F));
e.Graphics.DrawString("T & T", HeadLine, drawBrush, new PointF(20.0F, 50.0F));
e.Graphics.DrawString("Kolli", HeadLine, drawBrush, new PointF(270.0F, 50.0F));
e.Graphics.DrawString("Vægt ialt", HeadLine, drawBrush, new PointF(330.0F, 50.0F));
e.Graphics.DrawString("Service", HeadLine, drawBrush, new PointF(420.0F, 50.0F));
e.Graphics.DrawString("Modtager", HeadLine, drawBrush, new PointF(490.0F, 50.0F));
e.Graphics.DrawString("Navn", HeadLine, drawBrush, new PointF(580.0F, 50.0F));
e.Graphics.DrawLine(Pens.Black, DLine1_x1, DLine1_y1, DLine1_x2, DLine1_y2);
MessageBox.Show(counter.ToString());
if (counter <= TotalPages)
{
for (int i=Convert.ToInt16(aRowDesign[counter]);i<=Convert.ToInt16(aRowDesign[counter+1]);i++)
{
if (listView1.Items[i].SubItems.Count > 10)
{
//Track & Trace nummer
e.Graphics.DrawString(listView1.Items[i].SubItems[0].Text, NormalFont_Small, Brushes.Black, 20.0F, 70.0F+((float)i*20), new StringFormat());
//Kolli
e.Graphics.DrawString(listView1.Items[i].SubItems[10].Text, NormalFont_Small, Brushes.Black, 270.0F, 70.0F+((float)i*20), new StringFormat());
//Vægt
e.Graphics.DrawString(listView1.Items[i].SubItems[11].Text, NormalFont_Small, Brushes.Black, 330.0F, 70.0F+((float)i*20), new StringFormat());
//Service
e.Graphics.DrawString(listView1.Items[i].SubItems[9].Text, NormalFont_Small, Brushes.Black, 420.0F, 70.0F+((float)i*20), new StringFormat());
//Modtager
e.Graphics.DrawString(listView1.Items[i].SubItems[3].Text, NormalFont_Small, Brushes.Black, 490.0F, 70.0F+((float)i*20), new StringFormat());
//Navn
e.Graphics.DrawString(listView1.Items[i].SubItems[4].Text, NormalFont_Small, Brushes.Black, 580.0F, 70.0F+((float)i*20), new StringFormat());
}
}
}
}
catch( Exception e1 )
{
MessageBox.Show( e1.ToString() );
}
}
//>Rune
