05. oktober 2004 - 15:14
Der er
1 kommentar og
1 løsning
Udskrive indholdet at ListView
Hej.
Jeg vil gerne udskrive indholdet af et listview til min printer. Mit listview inderholder 3 kolonner.
Kom gerne med et eksempel.
Det skulle gerne se nogenlunde sådan her ud på printeren, bare et eksempel:
Nr. Titel Pris
98777 You Got Served 35,-
23531 Titanic 25,-
osv.. håber I forstår hvad jeg mener :)
05. oktober 2004 - 18:57
#1
private void button3_Click(object sender, System.EventArgs e)
{
System.Drawing.Printing.PrintDocument pdc = new System.Drawing.Printing.PrintDocument();
pdc.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(pdc_PrintPage);
pdc.DocumentName = "Listview";
pdc.Print();
}
private void pdc_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
Font f = new Font("arial",14);
Brush brush = SystemBrushes.ControlText;
float venstre = 20;
float xpos = venstre;
float ypos = 20;
float spacing = 5;
// find højde med den angivne font
float hoejde = e.Graphics.MeasureString(this.listView1.Columns[0].Text,f).Height;
// find max bredde på en kolonne
float[] breddeArray = new float[this.listView1.Columns.Count];
// find max bredde og udskriv columnheader
for (int i=0;i<this.listView1.Columns.Count;i++)
{
ypos = venstre;
breddeArray[i] = this.FindMaxSize(e.Graphics,f,i);
string t = this.listView1.Columns[i].Text;
e.Graphics.DrawString(t,f,brush,xpos,ypos);
ypos += hoejde + spacing;
// udskriv listview-items
for (int j=0;j<this.listView1.Items.Count;j++)
{
ListViewItem item = this.listView1.Items[j];
e.Graphics.DrawString(item.SubItems[i].Text,f,brush,xpos,ypos);
ypos += hoejde + spacing;
}
xpos += breddeArray[i] + spacing;
}
}
private float FindMaxSize(System.Drawing.Graphics g,Font f,int column)
{
float max = g.MeasureString(listView1.Columns[column].Text,f).Width;
foreach (ListViewItem item in this.listView1.Items)
{
SizeF size = g.MeasureString(item.SubItems[column].Text,f);
if (size.Width > max)
{
max = size.Width;
}
}
return max;
}
Du kommer nok i problemer hvis teksten er breddere end papirets bredde, men det kan du også tjekke for, hvis det bliver aktuelt.