giovedì 16 febbraio 2012

Silverlight 5 stampare una pagina

Si riporta l'articolo scritto per il sito http://www.iprogrammatori.it/articoli/programmazione/art_silverlight-5-la-stampa-tramite-vbnet-e-_1140.aspx



Introduzione
In questo articolo, vedremo come applicare nelle nostre applicazioni la stampa.
Con la tecnologia Silverlight, dalla versione 4 sono state introdotte diverse classi, tra queste quella relativa alla stampa.
Vedremo, come in VB.Net e C# poter effettuare delle stampe.



Stesura di codice
Si crea un nuovo progetto in Silverlight 5, si aggiunge nella pagina un controllo image ed un pulsante, per il controllo image, impostiamo un file immagine, e come nome il seguente valore “imgFoto
“ per la proprietà “Name”.
Il pulsante avrà la proprietà name impostata con il seguente valore “btnStampa
“ e la proprietà “Content” con il seguente valore “Stampa
“ .
Qui di seguito si riporta il codice del file XAML.



<Grid x:Name="LayoutRoot" Background="White">



<Button Content="Stampa" Height="23" HorizontalAlignment="Left" Margin="270,10,0,0" Name="btnStampa" VerticalAlignment="Top" Width="75" />



<Image Height="259" HorizontalAlignment="Left" Margin="10,10,0,0" Name="imgFoto" Opacity="1" Source="/SLPrint;component/Images/FileImg.jpg" Stretch="UniformToFill" VerticalAlignment="Top" Width="243" />



</Grid>





Passiamo in visualizzazione codice, per scrivere il codice che permette di effettuare la stampa.
Per utilizzare le classi per la stampa, dobbiamo aggiungere lo spazio dei nomi per la stampa, qui di seguito si riporta il codice di tali operazioni




VB.Net



'per la stampa



Imports System.Windows.Printing





C#



//per la stampa



using System.Windows.Printing;





Terminata tale operazioni, si crea un oggetto a livello di classe riguardante la classe “PrintDocument” il quale tramite il metodo Print stamperà il file.
Dichiariamo tale membro nel seguente modo.




VB.Net



Dim stampa As PrintDocument





C#



PrintDocument stampa;



Nel costruttore, dopo l’inizializzazione, impostiamo il nostro membro e si creano i gestori di eventi per questa classe.
Nel costruttore scriviamo il seguente codice.



VB.Net



Public Sub New()



InitializeComponent()



stampa = New PrintDocument



AddHandler stampa.PrintPage, AddressOf stampa_PrintPage



AddHandler stampa.EndPrint, AddressOf stampa_EndPrint





End Sub





C#



public MainPage()



{



InitializeComponent();



stampa = new PrintDocument();



//gestore di evento



stampa.PrintPage += new EventHandler<PrintPageEventArgs>(stampa_PrintPage);



stampa.EndPrint += new EventHandler<EndPrintEventArgs>(stampa_EndPrint);





}



Qui di seguito si riporta il codice relativo all’evento PrintPage, che si verifica nel momento in cui viene eseguita la stampa.
Nell’evento, viene passato alla proprietà “PageVisual” la nostra griglia contenente i controlli, possiamo anche effettuare la stampa dei singoli controlli.
Qui di seguito si riporta il codice per la stampa di tutto ciò che si trova nella form.



VB.Net



Private Sub stampa_PrintPage(sender As Object, e As PrintPageEventArgs)



btnStampa.Visibility = System.Windows.Visibility.Collapsed



e.PageVisual = LayoutRoot





End Sub







C#



void stampa_PrintPage(object sender, PrintPageEventArgs e)



{



btnStampa.Visibility = System.Windows.Visibility.Collapsed;



e.PageVisual = LayoutRoot;



}



Qui di seguito il codice per la stampa del singolo controllo.



VB.Net



Private Sub stampa_PrintPage(sender As Object, e As PrintPageEventArgs)



e.PageVisual = imgFoto



End Sub





C#



void stampa_PrintPage(object sender, PrintPageEventArgs e)



{



e.PageVisual = imgFoto;



}







Nell’evento “EndPrint”, scriviamo il codice per verificare che la stampa è andata a buon fine oppure si è verificato un errore, e la visualizzazione del pulsante, che durante l’evento di stampa abbiamo nascosto per evitare la relativa stampa.
Qui di seguito si riporta il codice completo dell’evento “EndiPrint”.




VB.Net



Private Sub stampa_EndPrint(sender As Object, e As EndPrintEventArgs)



If Not e.Error Is Nothing Then MessageBox.Show(e.Error.Message)



btnStampa.Visibility = System.Windows.Visibility.Visible



End Sub





C#



void stampa_EndPrint(object sender, EndPrintEventArgs e)



{



if (e.Error != null)



MessageBox.Show(e.Error.Message);





btnStampa.Visibility = System.Windows.Visibility.Visible;





}







Conclusioni
Ora non ci resta che eseguire la nostra applicazione e fare delle proved di stampa.
Con la versione 4 e la versione 5 da poco rilasciata, nella tecnologia Silverlight ci sono notevole funzionalità, migliorando di molto questa tecnologia. Con la classe per la stampa possiamo dotare le nostre applicazioni ulteriore professionalità.

Nessun commento: