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à.