johmolan 0 Light Poster

I have a windowsform, on that form I have put a panel.

on this panel I have some labels and textboxes and a tabellayoutpanel.

i use this code to print:

Private Sub PrintDocument1_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
        Static page As Integer = 1
        Dim startPosition As Integer = (page - 1) * PrintDocument1.DefaultPageSettings.Bounds.Height
        Static maxPages As Integer = 0
        If page = 1 Then
            For Each ctrl As Control In Me.Panel1.Controls
                If TypeOf ctrl Is TextBox Or TypeOf ctrl Is Label Or TypeOf ctrl Is RichTextBox Or TypeOf ctrl Is CheckBox Or TypeOf ctrl Is TableLayoutPanel Then
                    ctrl.Tag = Int((ctrl.Top + ctrl.Height) / PrintDocument1.DefaultPageSettings.Bounds.Height) + 1
                    If CInt(ctrl.Tag) > maxPages Then maxPages = CInt(ctrl.Tag)
                End If

            Next

        End If

        For Each ctrl As Control In Me.Panel1.Controls
            If val(ctrl.Tag) = page Then
                Dim sf As New System.Drawing.StringFormat
                If TypeOf ctrl Is TextBox Then
                    If DirectCast(ctrl, TextBox).TextAlign = HorizontalAlignment.Right Then
                        sf.Alignment = StringAlignment.Far
                    Else
                        sf.Alignment = StringAlignment.Near
                    End If
                ElseIf TypeOf ctrl Is Label Then
                    If DirectCast(ctrl, Label).TextAlign = ContentAlignment.TopLeft Then
                        sf.Alignment = StringAlignment.Near
                    ElseIf DirectCast(ctrl, Label).TextAlign = ContentAlignment.TopRight Then
                        sf.Alignment = StringAlignment.Far

                    End If

                ElseIf TypeOf ctrl Is RichTextBox Then
                    If DirectCast(ctrl, RichTextBox).SelectionAlignment = HorizontalAlignment.Right Then
                        sf.Alignment = StringAlignment.Far
                    Else
                        sf.Alignment = StringAlignment.Near
                    End If

'*********************************************************************************
                ElseIf TypeOf ctrl Is TableLayoutPanel Then
                    If DirectCast(ctrl, TableLayoutPanel).Visible = True Then
                        sf.Alignment = StringAlignment.Far
                    Else
                        sf.Alignment = StringAlignment.Near
'************************************************************************************

                    End If


                    ElseIf TypeOf ctrl Is CheckBox Then
                        If DirectCast(ctrl, CheckBox).TextAlign = ContentAlignment.TopLeft Then
                            sf.Alignment = StringAlignment.Near
                        ElseIf DirectCast(ctrl, CheckBox).TextAlign = ContentAlignment.TopRight Then
                            sf.Alignment = StringAlignment.Far
                        End If
                    End If

                    sf.FormatFlags = StringFormatFlags.NoClip
                    e.Graphics.DrawString(ctrl.Text, ctrl.Font, New SolidBrush(ctrl.ForeColor), New RectangleF(ctrl.Left, ctrl.Top - startPosition, ctrl.Width + 50, ctrl.Height), sf)
                End If

        Next

        page += 1
        If page > maxPages Then
            e.HasMorePages = False
            page = 1
            maxpages = 0
        Else
            e.HasMorePages = True
        End If

    End Sub

But it does not print out my TableLayoutPanel.

Can anybody help me on my way here?