none
Vb 2010 stampare dati Listview

    Domanda

  • Salve a tutti sto facendo un programmino di prova per stampare.. Ho una listview con due colonne , aggiungo dei dati e tramite un button stampa devo stampare i dati aggiunti nella listview.. Ho provato cosi ecco i codice

     Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
            
            'Consente all'utente di scegliere l'intervallo di pagine che lui o lei avrebbe desiderato stampare.
            PrintDialog1.AllowSomePages = True
    
            ' Mostra il pulsante di aiuto
            PrintDialog1.ShowHelp = True
            'Impostare la proprietà del documento per la PrintDocument per        
            'il quale l'evento PrintPage è stato gestito. Per visualizzare          
            'la finestra di dialogo, sia la proprietà o la proprietà                
            'PrinterSettings deve essere impostata.
            PrintDialog1.Document = documento
            ' Se il risultato è OK quindi stampare il documento.
            If (PrintDialog1.ShowDialog() = Windows.Forms.DialogResult.OK) Then
                documento.Print()
            End If
    
        End Sub
    
     Private Sub PrintDocument1_PrintPage1(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
            'disegna il testo da stampare
            Dim NumeroRigheLista As Integer
            Dim testo As String
            Dim posy As Integer
    
            Dim NuovoFont As New Font("Times New Roman", 16, FontStyle.Regular, GraphicsUnit.Point)
    
            NumeroRigheLista = ListView1.Items.Count - 1
    
            'inizio a stampare l'elenco
            For i = 0 To NumeroRigheLista - 1
                testo = ListView1.Items(0).ToString
                testo = ListView1.Items(1).SubItems.ToString
                posy = posy + 100
                e.Graphics.DrawString(testo, NuovoFont, Brushes.Black, 20, posy)
                e.Graphics.DrawRectangle(Pens.Black, 18, posy, 150, 150)
            Next
        End Sub
    Ma purtroppo mi viene stampato in bianco sia con la stampante sia con pdf cretor...Mi potete aiutare grazie...

    mercoledì 23 maggio 2012 16:08

Risposte

  • Intanto, c'è un errore nella prima riga dove dichiari la procedura che gestirà la stampa: la tua variabile si chiama "documento", mentre la fine della dichiarazione riporta "...Handles PrintDocument1.PrintPage": devi mettere "documento" al posto di "PrintDocument1".
    Poi devi modificare il codice che itera tra gli elementi della ListView: devi scrivere un codice simile al seguente

    For i = 0 To ListView1.Items.Count - 1
      PosY += 100
      e.Graphics.DrawString(ListView1.Items(i).Text & " - " & ListView1.Items(i).SubItems(1).Text, font1, Brushes.Black, 100, PosY)
    Next
    MessageBox.Show("Stampa completata")
    In questo modo, ogni riga stampata visualizzerà il valore presente nella prima colonna e, di seguito, il valore presente nella seconda colonna.

    Ciao.


    Luigi Bruno - Microsoft Community Contributor 2011 Award

    mercoledì 23 maggio 2012 21:02

Tutte le risposte

  • Presupponiamo che "documento" sia stato correttamente dichiarato come System.Drawing.Printing.PrintDocument().
    Prova ad inserire un'istruzione MessageBox.Show() subito dopo l'assegnazione del valore alla variabile "NumeroRigheLista" per essere sicuro che il valore non sia 0; inserisci uno o due breakpoint sulle righe di codice dove effettui l'assegnazione del valore alla variabile "testo" e vedi se la variabile stessa assume un valore che non sia nullo eseguendo l'esecuzione uno step alla volta.

    Ciao.


    Luigi Bruno - Microsoft Community Contributor 2011 Award

    mercoledì 23 maggio 2012 18:17
  • Ho provato mettere il message.show() come mi hai detto tu ma non so cosa sono i breakpoint.

    Comunque stampare il testo inserito su una richtextbox lo so fare e mi pare piu semplice , ma stampare dati su una listbox ed una listview a piu colonne mi pare piu difficile non so piu cosa fare . Se puoi farmi degli esempi te ne sarei grato.. Purtroppo sono alle prime armi e sto studiando addesso ....Grazie.

    mercoledì 23 maggio 2012 19:46
  • Intanto, c'è un errore nella prima riga dove dichiari la procedura che gestirà la stampa: la tua variabile si chiama "documento", mentre la fine della dichiarazione riporta "...Handles PrintDocument1.PrintPage": devi mettere "documento" al posto di "PrintDocument1".
    Poi devi modificare il codice che itera tra gli elementi della ListView: devi scrivere un codice simile al seguente

    For i = 0 To ListView1.Items.Count - 1
      PosY += 100
      e.Graphics.DrawString(ListView1.Items(i).Text & " - " & ListView1.Items(i).SubItems(1).Text, font1, Brushes.Black, 100, PosY)
    Next
    MessageBox.Show("Stampa completata")
    In questo modo, ogni riga stampata visualizzerà il valore presente nella prima colonna e, di seguito, il valore presente nella seconda colonna.

    Ciao.


    Luigi Bruno - Microsoft Community Contributor 2011 Award

    mercoledì 23 maggio 2012 21:02
  • Ti ringrazio moltissimo.......... funziona  :):):)
    giovedì 24 maggio 2012 16:33
  • Ti ringrazio moltissimo.......... funziona  :):):)

    Bene, questa è la cosa importante.

    Ciao.


    Luigi Bruno - Microsoft Community Contributor 2011 Award

    venerdì 25 maggio 2012 07:11