Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - eventargs
Forum - C# / VB.NET - eventargs

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
sergio58 (Normal User)
Rookie


Messaggi: 38
Iscritto: 05/08/2008

Segnala al moderatore
Postato alle 18:04
Sabato, 24/01/2009
Debbo inviare il numero di pagine elaborate in un'evento _printPage, ad un form2 in cui è presente un printpreviewcontrol.

Dalle ricerche fatte risulta che debbo effettuare una prima elaborazione dell'evento _printPage per accertare il numero di pagine elaborate.

Ed una seconda elaborazione , vera e propra, per stamparla.

Dovrei usare(sembra) la classe eventArgs,ma non sò da dove iniziare.

Potreste darmi un'aiuto ?

sergio

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 16:18
Domenica, 25/01/2009
La classe EventArgs è la classe base da cui derivano tutti gli altri event args (ossia "event arguments"), che sono sempre, per convenzione, contenuti nel parametro "e" di ogni evento.
L'evento PrintPage fornisce un "e" di tipo PrintPageEventArgs, se non ricordo male, e da questo non puoi sapere quante pagine da stampare ci sono. Il motivo è molto semplice. Se è il programmatore a decidere dove e come ogni cosa venga stampata, appunto definendo il codice di PrintPage, come farebbe il computer anche solo a stimare il numero di pagine occorrenti quando esso può cambiare ad ogni minimo dettaglio (ad esempio se ci sono degli If nel codice di stampa)?
Tu puoi solo impostare e.HasMorePages su True se, arrivato alla fine della pagina, vedi che c'è altro da stampare, e magari incrementare un contatore per sapere quante pagine hai processato, ma questo numero lo saprai solo alla fine del processo.

PM Quote
Avatar
sergio58 (Normal User)
Rookie


Messaggi: 38
Iscritto: 05/08/2008

Segnala al moderatore
Postato alle 21:41
Domenica, 25/01/2009
Mi sono documentato nel frattempo, dovrei usare il metodo OnPrintPage per generare l'evento PrintPage tramite una classe derivata.

Però oltre alla dichiarazione presente nella guida non sò andare.

Potresti passarmi un pò di codice di esempio ?

Sergio

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 16:37
Lunedì, 26/01/2009
Non ho capito cosa vuoi fare. Perchè creare una classe derivata? e derivata da cosa?

PM Quote
Avatar
safhkit (Normal User)
Newbie


Messaggi: 4
Iscritto: 18/02/2009

Segnala al moderatore
Postato alle 17:48
Mercoledì, 18/02/2009
avrei un problema simile con il printPage: in pratica provo a stampare una pagina (in un print preview). Se devo stampare una pagina non ho problemi. Se devo stampare più pagine (supponiamo per semplicità anche solo 2) quello che succede (senza aver usato HasMorePages=true) è che gli altri dati mi vengono stampati sulla stessa pagina (la prima, per es.). Quindi penso che il problema sia far capire all'applicazione quando una pagina è terminata e spingerla a creare una nuova pagina vuota nella quale continuare la stampa degli altri dati.

Ho provato con HasMorePages=true, ma l'effetto è lo stesso: l'unica differenza è che non ho più la prima pagina contenente tanti dati sovrascritti, ma molte pagine IDENTICHE che sono una copia della prima pagina (sempre con le sovrascizioni come detto precedentemente).

Quindi, ricapitolando, mi servirebbe un comando che dica all'appplicazione quando può considerare la stampa della prima pagina OK e quindi farmi vedere (se serve) un'ulteriore pagina vuota nella quale poter stampare.

Aiuto!!!

PM Quote
Avatar
sergio58 (Normal User)
Rookie


Messaggi: 38
Iscritto: 05/08/2008

Segnala al moderatore
Postato alle 18:28
Mercoledì, 18/02/2009
Il tuo problema è diverso dal mio ,per organizzare la stampa in una seconda pagina devi dichiarare come static le variabili che portano avanti il processo di stampa.
Perchè ogni volta che stampa una nuova pagina l'evento si ripete, e vengono azzerat le variabili,invece se le dichiari come static ,vengono incrementate.


PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 18:52
Mercoledì, 18/02/2009
In effetti è un po' OT, e in ritardo di un mese. Comunque, ricorda che HasMorePages = true dice soltanto che l'evento deve ripetersi poiché ci sono altre pagine da stampare. E' logico che, se l'evento si ripete e il codice al suo interno è lo stesso, la pagina verrà stampata uguale. Quello che devi fare, come dice giustamente sergio, è usare una variabile statica che inidichi lo stato di lettura a cui sei arrivato (ad esempio un Indice, che dica quanti dati hai stampato): la routine dovrà quindi prendere tale variabile static come inizio e procedere. Ricordati di azzerare questa variabile quando sei certo che non si siano ulteriori dati da stampare, o alla prossima stampa potrebbe generare un'eccezione di tipo IndexOutOfRangeException.

PM Quote
Avatar
safhkit (Normal User)
Newbie


Messaggi: 4
Iscritto: 18/02/2009

Segnala al moderatore
Postato alle 10:22
Giovedì, 19/02/2009
Scusatemi per l'OT: pensavo fosse lo stesso problema. Ho bisogno di un chiarimento:
io devo definire una variabile statica che mi dice, ad es. dove sono arrivato con i dati da stampare, OK.
Ma questa variabile statica va inizializzata in una funzione diversa dalla printPage? (magari da una funzione che poi richiami la printPage?)

Se è così vuol dire che devo richiamare la printPage tante volte per quante sono le pagine da stampare. Ho capito bene?

E un ultima cosa: se devo richiamare la printPage per ogni pagina da stampare l'applicazione lo capisce da sola che nella print preview queste pagine da stampare sono sequenziali?

PS. Quindi non esiste un comando che permette di specificare "pagina corrente OK per la stampa" e l'applicazione passa alla successiva (se ho altri dati), mandando la precedente allo spooler?

Grazie

PM Quote
Avatar
sergio58 (Normal User)
Rookie


Messaggi: 38
Iscritto: 05/08/2008

Segnala al moderatore
Postato alle 12:18
Giovedì, 19/02/2009
Le variabili static vanno definite nell'evento _PrintPage

Il richiamo dell'evento _PrintPage avviene automaticamente fino a quando  HasMorePages = true .

Quando arrivi all'ultima pagina metti a  false
HasMOrePages

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo