12

Jul

Silverlight 4 : Gestione della stampa

Una delle novità che è stata introdotta con Silverlight 4 è il supporto alla stampa . E’ possibile inviare alla stampante qualsiasi elemento visibile di tipo UIElement .  La classe PrintDocument fornisce I metodi di stampa nelle applicazioni Silverlight 4 .

Per iniziare è inanzitutto necessario aggiungere un oggetto di tipo PrintDocument e successivamente richiamarne il metodo Print  per visualizzare la finestra di dialogo.

image

Per impostare il contenuto che deve essere stampato è necessario gestire l’evento PrintPage e indicare l’oggetto che deve essere stampato  assegnando un valore a e.PageVisual . Se il contenuto che deve essere stampato occuperà più pagine è necessario impostate la proprietà HasMorePage a true , il gestore PrintPage continuerà ad essere eseguito finche HasMorePage non sarà False .  Oltre a PrintPage abbiamo altri due eventi a disposizione che sono BeginPrint e EndPrint . Il primo rispettivamente viene eseguito prima dell’evento printpage e può essere utilizzato ad esempio per preparare l’elemento che deve essere stampato o per inizializzare un contatore delle pagine da stampare , il secondo invece viene eseguito quando la stampa viene completata e tramite la proprietà Error di EndPrintEventArgs possiamo leggere eventuali errori di stampa .

In questo semplice esempio viene inviato alla stampante il contenuto del canvans che segue

image

 Iniziamo aggiungendo un oggetto di tipo PrintDocument 

Private WithEvents Printer As New Printing.PrintDocument

      

Gestiamo l’evento click del pulsante avviando la stampa e chiamando il documento “ Esempio “

Private Sub BtnStampa_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles BtnStampa.Click

      
      Printer.Print("Esempio")
      
      
      
      

      
      End Sub
      
      
      
      

      

Inviamo in stampa il contenitore che contiene  quello che vogliamo stampare

Private Sub Printer_BeginPrint(ByVal sender As Object, ByVal e As System.Windows.Printing.BeginPrintEventArgs) Handles Printer.BeginPrint

      
      'Inserire qui il codice che deve essere eseguito prima che la stampa venga avviata 
      
      
      
      

      
      End Sub
      
      
      
      

      
       
      
      
      
      

      
      Private Sub Printer_PrintPage(ByVal sender As Object, ByVal e As System.Windows.Printing.PrintPageEventArgs) Handles Printer.PrintPage
      
      
      
      

      
           e.PageVisual = ToPrint
      
      
      
      

      
      End Sub
      
      
      
      

      
      
      

 

Private Sub Printer_EndPrint(ByVal sender As Object, ByVal e As System.Windows.Printing.EndPrintEventArgs) Handles Printer.EndPrint


      
      'Inserire qui il codice da eseguire dopo che la stampa è stata completata 
      
      
      
      

      
      'Tramite e.Error possiamo recuperare eventuali errori 
      
      
      
      

      
      End Sub
      
      
      
      

      

Cliccando su stampa invio il documento alla stampante

Ecco il risultato

image

In allegato trovate il codice di esempio .

by Andrea Romeo on 7/12/2010
Post archive