Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1

    [VB.NET] Stampare foglio con PrintPreviewControl

    Ciao ragazzi,
    qui di seguito vi posto il codice che utilizzo per richiamare l'anteprima di un DataGriView:

    codice:
    If newpage Then
                    row = Form4.dtg_profilo_agente.Rows(mRow)
                    x = e.MarginBounds.Left
                    For Each cell As DataGridViewCell In row.Cells
                        If cell.Visible Then
                            rc = New Rectangle(x, y, cell.Size.Width, cell.Size.Height)
                            e.Graphics.FillRectangle(Brushes.LightGray, rc)
                            e.Graphics.DrawRectangle(Pens.Black, rc)
                            Select Case Form4.dtg_profilo_agente.Columns(cell.ColumnIndex).DefaultCellStyle.Alignment
                                Case DataGridViewContentAlignment.BottomRight,
                                 DataGridViewContentAlignment.MiddleRight
                                    fmt.Alignment = StringAlignment.Far
                                    rc.Offset(-1, 0)
                                Case DataGridViewContentAlignment.BottomCenter,
                                DataGridViewContentAlignment.MiddleCenter
                                    fmt.Alignment = StringAlignment.Center
                                Case Else
                                    fmt.Alignment = StringAlignment.Near
                                    rc.Offset(2, 0)
                            End Select
    e.Graphics.DrawString(Form4.dtg_profilo_agente.Columns(cell.ColumnIndex).HeaderText,
                                                    Form4.dtg_profilo_agente.Font, Brushes.Black, rc, fmt)
                            x += rc.Width
                            h = Math.Max(h, rc.Height)
                        End If
                    Next
                    y += h
    
                End If
                newpage = False
    
                Dim thisNDX As Int32
                For thisNDX = mRow To Form4.dtg_profilo_agente.RowCount - 1
                    If Form4.dtg_profilo_agente.Rows(thisNDX).IsNewRow Then Exit For
                    row = Form4.dtg_profilo_agente.Rows(thisNDX)
                    x = e.MarginBounds.Left
                    h = 0
                    x = e.MarginBounds.Left
    
                    For Each cell As DataGridViewCell In row.Cells
                        If cell.Visible Then
                            rc = New Rectangle(x, y, cell.Size.Width, cell.Size.Height)
    
                            e.Graphics.DrawRectangle(Pens.Black, rc)
    
                            Select Case Form4.dtg_profilo_agente.Columns(cell.ColumnIndex).DefaultCellStyle.Alignment
                                Case DataGridViewContentAlignment.BottomRight,
                                 DataGridViewContentAlignment.MiddleRight
                                    fmt.Alignment = StringAlignment.Far
                                    rc.Offset(-1, 0)
                                Case DataGridViewContentAlignment.BottomCenter,
                                DataGridViewContentAlignment.MiddleCenter
                                    fmt.Alignment = StringAlignment.Center
                                Case Else
                                    fmt.Alignment = StringAlignment.Near
                                    rc.Offset(2, 0)
                            End Select
    
                            e.Graphics.DrawString(cell.FormattedValue.ToString(),
                                              Form4.dtg_profilo_agente.Font, Brushes.Black, rc, fmt)
    
                            x += rc.Width
                            h = Math.Max(h, rc.Height)
                        End If
    
                    Next
                    y += h
                    mRow = thisNDX + 1
    
                    If y + h > e.MarginBounds.Bottom Then
                        e.HasMorePages = True
                        newpage = True
                        Return
                    End If
                Next
            End If
    Quello che devo fare è stampare il contenuto del documento PrintPreviewControl1
    Grazie
    SanMichele

  2. #2
    Ragazzi qualche aiuto o idea?

  3. #3
    Ho provato semplicemente cosi:

    codice:
    PrintDocument1.Print()
    Funziona, nel senso che stampa il foglio ma non stampa il contenuto
    SanMichele

  4. #4
    Qualche aiuto ragazzi??

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2014
    residenza
    Vicenza
    Messaggi
    318
    difficile aiutarti se non possiamo provarlo

    riesci a fare un piccolo progetto dove si vede il problema (ma metteci solo l'essenziale, nessuna riga in più di codice che non serve) e così possiamo provarlo ??

  6. #6
    Quote Originariamente inviata da SirJo Visualizza il messaggio
    difficile aiutarti se non possiamo provarlo

    riesci a fare un piccolo progetto dove si vede il problema (ma metteci solo l'essenziale, nessuna riga in più di codice che non serve) e così possiamo provarlo ??

    Ciao SirJo
    ho scritto il tutto il codice perché così se a qualcuno potesse servire ne può approfittare
    Al di là di questo, il progetto attualmente ha solo una pagina
    1) Listview
    4) TextBox
    1) Pulsante Anteprima di stampa (vedi codice allegato)

    Quello che non riesco a fare è stampare il contenuto di un PrintPreviwContr1.
    Ho provato, ripeto, con PrintPreviewControl1.Print() ma l’esito è che stampa il foglio
    ma non il contenuto. Tutto qui

    PS: Ho visto solo ora che avevo scritto DataView perdonami ma in realtà è ListView
    grazie
    SanMichele

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2014
    residenza
    Vicenza
    Messaggi
    318
    quando fai il preview, sul monitor li vedi i dati ??

    ... ma soprattutto, che codice hai nell'evento BeginPrint ?
    Ultima modifica di SirJo; 30-05-2023 a 07:59

  8. #8
    Si sul video ci sono i dati e poi stampa vuoto

  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2014
    residenza
    Vicenza
    Messaggi
    318
    ok, adesso rispondi alla seconda domanda che ti ho fatto

  10. #10
    Utente di HTML.it
    Registrato dal
    Mar 2014
    residenza
    Vicenza
    Messaggi
    318
    se vuoi sono riuscito a riprodurre l'errore ed ho capito che cosa è sbagliato

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.