Guten Tag, trotz miesem Wetter!
Ich möchte gerne meine Daten aus einem Datagridview ausdrucken mit folgendem Code, der natürlich nicht von mir ist (Ich verstehe ihn auch noch nicht vollständig). Die Tabelle wird auch mehrseitig wie gewünscht gedruckt, nur es besteht folgendes Problem beim Drucken der ersten Seite:
Beim ersten Drucken nach dem Programmstart wird die 1. Zeile ausgelassen, die Kopfzeile aber gedruckt. Bei allen nachfolgenden Druckversuchen wird die Kopfzeile nicht gedruckt, aber alle Zeilen von 1 bis Ende. Bemerken möchte ich noch, dass bei den Folgeseiten die Kopfzeile immer gedruckt wird und auch keine Zeile ausgelassen wird.
Ich hoffe, ich habe mein Problem verständlich beschreiben können. Wer kann mir weiterhelfen?
Vielen Dank einstweilen.
el
Ich möchte gerne meine Daten aus einem Datagridview ausdrucken mit folgendem Code, der natürlich nicht von mir ist (Ich verstehe ihn auch noch nicht vollständig). Die Tabelle wird auch mehrseitig wie gewünscht gedruckt, nur es besteht folgendes Problem beim Drucken der ersten Seite:
Beim ersten Drucken nach dem Programmstart wird die 1. Zeile ausgelassen, die Kopfzeile aber gedruckt. Bei allen nachfolgenden Druckversuchen wird die Kopfzeile nicht gedruckt, aber alle Zeilen von 1 bis Ende. Bemerken möchte ich noch, dass bei den Folgeseiten die Kopfzeile immer gedruckt wird und auch keine Zeile ausgelassen wird.
VB.NET-Quellcode
- Dim mRow1 As Integer = 0
- Dim newpage1 As Boolean = True
- Private Sub BoxTabelleToolStripMenuItem_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles BoxTabelleToolStripMenuItem.Click
- PrintDialog1.AllowSelection = True
- PrintDialog1.AllowSomePages = True
- PrintDialog1.AllowCurrentPage = True
- PrintDialog1.PrinterSettings = PageSetupDialog1.PrinterSettings
- PrintPreviewDialog1.WindowState = FormWindowState.Maximized
- PrintDialog1.ShowDialog()
- PrintPreviewDialog1.Document = PrintDocument1
- PrintPreviewDialog1.ShowDialog()
- End Sub
- Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
- With TblBoxdgv
- Dim fmt As StringFormat = New StringFormat(StringFormatFlags.LineLimit)
- fmt.LineAlignment = StringAlignment.Center
- fmt.Trimming = StringTrimming.EllipsisCharacter
- Dim y As Single = e.MarginBounds.Top
- Do While mRow1 < .RowCount
- Dim row As DataGridViewRow = .Rows(mRow1)
- Dim x As Single = e.MarginBounds.Left
- Dim h As Single = 0
- For Each cell As DataGridViewCell In row.Cells
- Dim rc As RectangleF = New RectangleF(x, y, cell.Size.Width, cell.Size.Height)
- : e.Graphics.DrawRectangle(Pens.Black, rc.Left, rc.Top, rc.Width, rc.Height)
- If (newpage1) Then
- e.Graphics.DrawString(TblBoxdgv.Columns(cell.ColumnIndex).HeaderText, .Font, Brushes.Black, rc, fmt)
- Else
- e.Graphics.DrawString(TblBoxdgv.Rows(cell.RowIndex).Cells(cell.ColumnIndex).FormattedValue.ToString(), .Font, Brushes.Black, rc, fmt)
- End If
- : x += rc.Width
- h = Math.Max(h, rc.Height)
- Next
- newpage1 = False
- y += h
- mRow1 += 1
- If y + h > e.MarginBounds.Bottom Then
- e.HasMorePages = True
- mRow1 -= 1
- newpage1 = True
- Exit Sub
- End If
- Loop
- mRow1 = 0
- End With
- End Sub
Ich hoffe, ich habe mein Problem verständlich beschreiben können. Wer kann mir weiterhelfen?
Vielen Dank einstweilen.
el