C# Come Stampare più pagine

giovedì 19 maggio 2011 - 16.15
Tag Elenco Tags  C#  |  .NET 2.0  |  Windows 7  |  Visual Studio 2010

dad388 Profilo | Newbie

]Ciao a tutti,
sto procedendo con il mio progettino e sono arrivato al punto di dover stampare ma mi sono bloccato nello stampare più si una pagina:
Per la stampa io procedo così:

private void Stampa_Click(object sender, EventArgs e) { printDocument1.DocumentName = this.textboxes[1].Text; printDocument1.Print(); }

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra


in questo modo mi stampa solo una pagina.

Come posso fare?
so che bisogna usare "e.HasMorePages = true;" ma non ho la minima idea di come fargli capire di continuare a fare le pagine

Grazie mille a tutti

Brainkiller Profilo | Guru

>Come posso fare?
>so che bisogna usare "e.HasMorePages = true;" ma non ho la minima
>idea di come fargli capire di continuare a fare le pagine

Prova a guardare il secondo post mia risposta:
http://www.dotnethell.it/forum/messages.aspx?ThreadID=1125

David De Giacomi | <empty>
http://blogs.dotnethell.it/david/

dad388 Profilo | Newbie

>>Come posso fare?
>>so che bisogna usare "e.HasMorePages = true;" ma non ho la minima
>>idea di come fargli capire di continuare a fare le pagine
>
>Prova a guardare il secondo post mia risposta:
>http://www.dotnethell.it/forum/messages.aspx?ThreadID=1125
>
>David De Giacomi | <empty>
>http://blogs.dotnethell.it/david/

ciao grazie per la risposta, il concetto l'ho capito ma sarà la febbre che mi rintrona ma non riesco a capire dove dovrei mettere questo controllo delle righe, perchè dentro al ciclo no altrimenti mi fa un loop infinito, dopo il for nemmeno x' quando esce è già arrivato a 300.

mi daresti qualche indizio aggiuntivo? :)

Brainkiller Profilo | Guru

>mi daresti qualche indizio aggiuntivo? :)

Ti giro un esempio:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

E' abbastanza semplice.
In alto c'è una List<string> contenente le righe da stampare.
Poi ci sono le righe per pagina (10)
E un contatore righe_stampate che tiene traccia dell'indice della riga stampata.

Sotto c'è il printpage, che stampa le righe per pagian e c'è un ciclo che stampa fino a quando index < righe_per_pagina ossia stampa (10 righe per pagina)
Sotto c'è un IF se l'ultima riga stampata (righe_stampate) è minore delle righe contenute (righe.count) allora gli dice hasmorepages = true quindi richiama l'evento, e ne stampa altre 10, fino alla fine.
Ciao

David De Giacomi | <empty>
http://blogs.dotnethell.it/david/

dad388 Profilo | Newbie

Ciao,
grazie brainkiller ci sono riuscito ora :)

ho modificato un pò il loop ma ce l'ho fatta era semplice alla fine.

Grazie

dad388 Profilo | Newbie

Ciao
scusa se ti faccio un'altra domanda anche se ho già segnato la soluzione del problema.
ma è normale che la stampa multipla funzioni solo con numeri di elementi che riempano tutta la pagina. ad esempio nel mio progetto per le prove ho inserito 300 elementi con 100 elementi per pagina, se ora gli passo il vero numero di elementi (dinamico) che è 202 si pianta la stampa, se invece tolgo il "multi pagina" non si blocca.

Grazie

EDIT: risolto era un problema di indici dei miei cicli :)
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5