Autor Beitrag
CodeGenerator
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Mi 10.06.09 15:16 
Hallo,
Ich habe eine Frage.
Ich habe meinen PrintPage-Event folgenderweise erstellt.
Wird eine Seite problemlos gedruckt, wenn aber das Text über Mehrere Seiten hingeht dann wird noch eine Zusätzliche leere Seite bloß mit dem Logo-Bild gedruckt.
Woran liegt es? Was mache ich falsch?
ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
void myPrintDocument_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
  try
  {
    e.HasMorePages = true;
    int items = 0, subItems = 390, lineCount = 0;
    // Logo
    Bitmap imagetoprint = (Bitmap)this.Logo.Image;
    //graphics object
    Graphics gr = e.Graphics;
    // my Font Nr.1
    System.Drawing.Font fnt = new System.Drawing.Font("Arial"10, FontStyle.Regular);
    // my Font Nr.2
    System.Drawing.Font fntBold = new System.Drawing.Font("Times New Roman"12, FontStyle.Bold);
    Brush br = Brushes.Black;

    // Header
    gr.DrawImage(imagetoprint, 5506017759); 
    gr.DrawString("my Name", fnt, br, 6080); // Address
    gr.DrawString("Strasse", fnt, br, 60100);
    gr.DrawString("Ort", fnt, br, 60130);

    string t2 = "Datum:"'\t'+ dateTimePicker1.Text; 
    gr.DrawString(t2, fnt, br, 60200);

    string t3 = "Erfassungsort:" + '\t' + this.cmbBoxErfassung.Text; 
    gr.DrawString(t3, fnt, br, 60220);

    string t6 = "Sachbearbeiter:" + '\t' + cmbBoxSachbearbeiter.Text; 
    gr.DrawString(t6, fnt, br, 60240);

    string t4 = "Auftrag - Nr.: " + this.txtBAuftrag.Text; 
    gr.DrawString(t4, fntBold, br, 60280);

    string t5 = "Lieferschein: " + this.txtBLieferSchein.Text;
    gr.DrawString(t5, fntBold, br, 60300);
    // Einen Array für feste Abstand zvischen Items
    int[] myPixelNumber = new int[7] { 60135212332412492832 }; 
    
    //ColumnsHeader aus ListView auslesen und zeichnen
    foreach (ColumnHeader cH in listView1.Columns)
    {
      gr.DrawString(cH.Text, fnt, br, myPixelNumber[items], 350);
      items++;
    }
    Pen myPen = new Pen(br);
    PointF a1 = new PointF(60,370);
    PointF a2 = new PointF(800,370);
    gr.DrawLine(myPen,a1,a2);// Eine Trennlinie zeichnen
    // Items und Subitems aus ListView auslesen und zeichnen
    foreach (ListViewItem lvi in listView1.Items)
    {
      items = 0;
      lineCount++;
      foreach (ListViewItem.ListViewSubItem lvi2 in lvi.SubItems)
      {
        gr.DrawString(lvi2.Text, fnt, br, myPixelNumber[items], subItems);
        items++;
      }
      subItems += 20;

    } 
  }
  catch (System.Exception printExc)
  {
    MessageBox.Show(printExc.Source + ": " + printExc.Message);
  }
  finally
  {
    e.HasMorePages = false;
    fnt.Dispose();
    fntBold.Dispose();
    br.Dispose();
  }
}


Zuletzt bearbeitet von CodeGenerator am Do 11.06.09 13:15, insgesamt 2-mal bearbeitet
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Mi 10.06.09 16:51 
... und Einrückungen wären auch nötig. Aber auch in seinem zweiten Post hier kommt er nicht darauf. Jürgen
CodeGenerator Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Mo 15.06.09 15:47 
Hallo alle zusammen,
mein Problem habe ich schon selber gelöst.
Es gab mehrere Fehler, jetzt funktioniert es.
Danke für die Freundlichkeit :P .