Problema printPreviewDialog

di il
12 risposte

Problema printPreviewDialog

Buon giorno 

utilizzo printPreviewDialog che mi da più pagina da stampare e le vedo

quando vado da previewr sul tasto stampa  mi stampa solo l'ultima pagina

se poi vado su PrintDocument mi stampa regolarmente

 Private Sub PrintDocument1_PrintPage_1(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage

uso visualbasic 2010

grazie 

12 Risposte

  • Re: Problema printPreviewDialog

    Ciao ho spostato la discussione in area VB.net, attenzione quando posti a cercare la sezione più appropriata del forum

  • Re: Problema printPreviewDialog

    10/08/2023 - bertobaffo ha scritto:


     Private Sub PrintDocument1_PrintPage_1(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage

    Il codice è incompleto: come hai codificato la gestione di questo evento?

  • Re: Problema printPreviewDialog

    Magari cambia titolo al thread e posta il codice tra tag CODE

  • Re: Problema printPreviewDialog

    Dopo aver modificato il titolo del thread inserendone uno specifico come suggerito da Oregon, dai una lettura al regolamento:

    https://www.iprogrammatori.it/forum-programmazione/regolamento.aspx

    Ti servirà a capire meglio come postare nel forum.

  • Re: Problema printPreviewDialog

    X bertobaffo: hai postato un nuovo thread. Quello che devi fare è andare sul primo messaggio di questo thread, cliccare sul pulsante modifica e applicare le correzioni 

  • Re: Problema printPreviewDialog

    La soluzione del problema è abbastanza semplice, ma per essere sicuro che sia quello posta un po' di codice, serve vedere la parte dove gestisci la variabile che contiene il numero della pagina

  • Re: Problema printPreviewDialog

    Grazie di aver accettato il mio probblema

    ecco il codice usato

      Public Class FormAttivita
       Dim NumIsc As Integer
       Dim TotaleCa As Integer
       Dim ContRighe As Integer = 0
       Dim RighePerPagina As Integer
       Public Pagina As Integer = 1
       Dim RigaDaStampare As Integer = 1
       Dim selezionatiC(10) As String
     
     
     
     
     Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
          
    ' qui tutto il codice per preparare il documento
    
           If (DataGridViewIscrAtt.RowCount - 1) > (RigaDaStampare) Then
               e.HasMorePages = True 'avvisa che il documento a più pagine
               Pagina += 1
           Else
               e.HasMorePages = False
           End If
           If e.HasMorePages = False Then
               e.Graphics.DrawString(" Numero Iscritti = " & NumIsc, font1, Brushes.Black, 20, 1100)
               '  e.Graphics.DrawString(lblcolli.Text, font1, Brushes.Black, 150, 1100)
               e.Graphics.DrawString("Totale Incasso =" & TotaleCa, font1, Brushes.Black, 500, 1100)
               '  e.Graphics.DrawString(Label1Importo.Text, font1, Brushes.Black, 650, 1100)
           Else
               e.Graphics.DrawString("segue", font1, Brushes.Black, 20, 1100)
           End If
    end sub
    ' qui stampo
       Private Sub Buttonstampa_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonStampa.Click
           ContRighe = 0
           RighePerPagina = 0
           Pagina = 1
           NumIsc = 0
           TotaleCa = 0
           RigaDaStampare = 1
           If PrintDialog1.ShowDialog = DialogResult.OK Then
               PrintDocument1.Print()
               Pagina = 1
           End If
       End Sub
        qui preview
       Private Sub ButtonPreviev_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonPreviev.Click
           ContRighe = 0
           RighePerPagina = 0
           Pagina = 1
           RigaDaStampare = 1
           NumIsc = 0
           TotaleCa = 0
           ' Set the print preview control's PrintDocument object.
           With PrintDocument1  ' stampa in orrizontale
               .DefaultPageSettings.Landscape = True
           End With
           PrintPreviewDialog1.ShowDialog()
           '    PrintDocument1.Print()
           '   Pagina = 1
       End Sub
  • Re: Problema printPreviewDialog

    X pertobaffo: per quale motivo ignori ciò che ti viene richiesto? hai postato senza sistemare titolo del thread e senza formattare il codice con l'apposita funzione. Ti avevo segnalato di leggere il regolamento.

    Ho appena sistemato io titolo della discussione e formattazione codice.

    Attendo una tua risposta.

  • Re: Problema printPreviewDialog

    Le righe

    ContRighe = 0
    RighePerPagina = 0
    Pagina = 1
    NumIsc = 0
    TotaleCa = 0
    RigaDaStampare = 1

    devi farle eseguire ogni volta che la stampa riparte.
    Nel momento in cui fai il preview, queste righe vengono eseguite (dato che premi il pulsante ButtonPreviev) ma nel momento in cui hai il preview a video e l'utente preme “stampa”, queste righe non vengono eseguite di nuovo, hai quindi il contatore delle pagine alla fine, ed è quindi normale che ti stampi solo l'ultima pagina
    Togli queste righe sia da ButtonPreviev_Click, sia da Buttonstampa_Click e mettile dentro l'evento che viene chiamato ogni volta che la stampa riparte, cioè:

    Private Sub PrintDocument1_BeginPrint(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintEventArgs) Handles PrintDocument1.BeginPrint
        ContRighe = 0
        RighePerPagina = 0
        Pagina = 1
        NumIsc = 0
        TotaleCa = 0
        RigaDaStampare = 1
    End Sub

    in questo modo, ogni volta che la stampa riparte, reinizializza tutte le routine che ti servono

    Inoltre, dentro all'evento BeginPrint, hai anche la possibilità eventualmente di chiedere all'utente su quale stampante vuole stampare, perchè ho visto che glielo chiedi quando premi il pulsante “stampa”, ma non quando preme il pulsante “preview”, per cui potrebbe poi stampare su una stampante non voluta.

    Sergio

  • Re: Problema printPreviewDialog

    E come mai hai una

    Sub PrintDocument1_PrintPage

    e anche una

    Sub PrintDocument1_PrintPage_1

    ?

  • Re: Problema printPreviewDialog

    11/08/2023 - oregon ha scritto:


    E come mai hai una

    Sub PrintDocument1_PrintPage

    e anche una

    Sub PrintDocument1_PrintPage_1

    ?

    Si, lo avevo notato anche io.
    Secondo me nel codice originale ha PrintDocument1_PrintPage_1 ma nel codice che ha riportato nel suo secondo post poi lo ha corretto, infatti si nota che il codice non è un copia-incolla ma è stato sistemato, se noti c'è un “end sub” che invece deve essere “End Sub” e anche una linea “qui preview” che invece dovrebbe essere “'qui preview” (manca l'apice)

  • Re: Problema printPreviewDialog

    11/08/2023 - Toki ha scritto:


    X pertobaffo: per quale motivo ignori ciò che ti viene richiesto? hai postato senza sistemare titolo del thread e senza formattare il codice con l'apposita funzione. Ti avevo segnalato di leggere il regolamento.

    Ho appena sistemato io titolo della discussione e formattazione codice.

    Attendo una tua risposta.

    Mi scuso per gli errori 

    e vi ringrazio per gli ottimi consigli che mi hanno risolto il probblema

    siete meravigliosi

    berto baffo

Devi accedere o registrarti per scrivere nel forum
12 risposte