Intercettare il pulsante premuto nella dialog di stampa da CrystalRepo...

martedì 20 gennaio 2009 - 21.10

cyberman78 Profilo | Newbie

Buonasera a tutti!
Sono un neofita nel C#, quindi abbiate pazienza se non dovessi capire al volo i vostri suggerimenti.
Ora bando alle ciance, passo a descrivervi il mio problema...

Ho un form che contiene un CrystalReportViewer al quale lascio il controllo completo per la stampa e per l'esportazione dati su Excel. Fin qui nessun problema, almeno fino ad oggi... infatti ho la necessita di sapere quando il report viene stampato poichè devo aggiornare delle informazioni sul DB.
Con il codice, che riporterò di seguito, sono riuscito ad intercettare il click sul pulsante di stampa del CrystalReportViewer ed il successivo click sulla dialog di stampa, ma non riesco a capire se è stato dato l'ok alla stampa oppure se è stata annullata.

private void CreaEvento_Stampa() { ToolStrip Ts = null; ToolStripButton Tsb = null; foreach(Control Ctrl in this.CrystalReportViewer.controls) { if (Ctrl is ToolStrip) { Ts = (ToolStrip) Ctrl; break; } } foreach(ToolStripItem Tsi in Ts.Items) { if (Tsi is ToolStripButton) { Tsb = (ToolStripButton) Tsi; break; } } Tsb.Click += new EventHandler(btt_Stampa_Click); } private void btt_Stampa_Click(object sender, EventArgs e) { //Se la stampa è stata avviata //Codice da eseguire per l'aggiornamento del DB }

Spero di essere stato chiaro ed esauriente nell'esporvi il mio problema.
Ringrazio anticipatamente chiunque possa essermi d'aiuto.

cyber

freeteo Profilo | Guru

Ciao,
secondo me non lo riesci a sapere perchè riguarda un'altra maschera esterna al tuo programma, gestita da Windows e quindi non lo sai se non tramite qualche API di sistema.

Io piuttosto proverei a farmi il codice che mi fa la stampa, quindi diciamo che deciderei di usare l'oggetto "PrintDialog" per fargli scegliere la stampante, e poi chiamerei il metodo "PrintToPrinter(...)" del report che hai visualizzato, passandogli la stampante e gli altri parametri.
Sicuramente è più laborioso perchè devi scriverti il codice, ma hai sicuramente maggior controllo...

Ciao.

Matteo Raumer
[MVP Visual C#]
http://blogs.dotnethell.it/freeteo

cyberman78 Profilo | Newbie

Ciao
Seguendo le tue indicazioni, ho nascosto il pulsante di stampa integrato nel CrystalReportViewer e ne ho creato uno mio. Ho scritto il codice, per il click sul pulsante di stampa, che riporto sotto e sembra funzionare.

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

oRpt è il mio ReportDocument.

Ciao
cyber

freeteo Profilo | Guru

ok!
Se funziona accetta la risposta che chiudiamo il thread.

Grazie.
Ciao.

Matteo Raumer
[MVP Visual C#]
http://blogs.dotnethell.it/freeteo
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-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5