Alessandro Del Sole's Blog

{ A programming space about Microsoft® .NET® }
posts - 1909, comments - 2047, trackbacks - 352

My Links

News

Your host

This is me! Questo spazio è dedicato a Microsoft® .NET®, di cui sono molto appassionato :-)

Cookie e Privacy

Microsoft MVP

My MVP Profile

Microsoft Certified Professional

Microsoft Specialist

Xamarin Certified Mobile Developer

Il mio libro su VB 2015!

Pre-ordina il mio libro su VB 2015 Pre-ordina il mio libro "Visual Basic 2015 Unleashed". Clicca sulla copertina per informazioni!

Il mio libro su WPF 4.5.1!

Clicca sulla copertina per informazioni! E' uscito il mio libro "Programmare con WPF 4.5.1". Clicca sulla copertina per informazioni!

These postings are provided 'AS IS' for entertainment purposes only with absolutely no warranty expressed or implied and confer no rights.
If you're not an Italian user, please visit my English blog

Le vostre visite

I'm a VB!

Guarda la mia intervista a Seattle

Follow me on Twitter!

Altri spazi

GitHub
I miei progetti open-source su GitHub

Article Categories

Archives

Post Categories

Image Galleries

Privacy Policy

WPF: stampare controlli dell'interfaccia con Visual Basic 2008

In Windows Presentation Foundation è molto semplice inviare in stampa i controlli dell’interfaccia. Questo è possibile grazie a un metodo chiamato PrintVisual della classe PrintDialog. Quest’ultima classe è, come si può intuire, quella che implementa la visualizzazione della classica finestra di dialogo per la stampa. Il suo metodo PrintVisual è in grado di inviare alla stampante, fisica o virtuale, un qualunque oggetto di tipo System.Windows.Media.Visual come, per esempio, la maggior parte dei controlli WPF che da questa classe derivano.

 

Vediamo un semplice esempio di codice. In un’applicazione WPF creata con Visual Basic 2008, il seguente XAML definisce una semplice griglia con due righe, la prima contenente un messaggio di testo e la seconda contenente un pulsante:

 

    <Grid Name="Grid1">

        <Grid.RowDefinitions>

            <RowDefinition/>

            <RowDefinition Height="30"/>

        </Grid.RowDefinitions>

       

        <TextBlock Name="TextBlock1" FontSize="26" FontWeight="Bold" Text="WPF Printing exercise" Grid.Row="0"/>

        <Button Grid.Row="1" Width="100" Height="25" Content="Print me!" Name="Button1" />

    </Grid>

 

Facendo doppio clic sul pulsante nel designer, viene generato automaticamente un gestore di evento Click per il pulsante stesso. Il codice di tale gestore sarà:

 

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

 

        Dim pDialog As New PrintDialog

 

        If pDialog.ShowDialog = True Then

 

            pDialog.PrintVisual(Me, "Stampa della finestra")

        End If

    End Sub

 

Utilizzando il metodo di istanza PrintVisual, stiamo facendo in modo che venga stampata la finestra intera (Me). Il secondo argomento del metodo è un testo descrittivo. Possiamo cambiare la riga di codice per stampare, per esempio, il solo TextBlock:

 

            pDialog.PrintVisual(Me.TextBlock1, "Griglia")

 

Ovviamente questo codice funziona con elementi dell’interfaccia stilizzati, quindi non essenziali come quelli illustrati nell’esempio. La stampa, come detto, può essere inviata a una stampante fisica, quindi su carta, o a una stampante virtuale. La seguente figura mostra il risultato della stampa della finestra, ottenuto inviando la stampa al driver per documenti XPS:

 

 

 

Con Windows Forms quanto ci mettete a farlo? ;-)

 

Alessandro

Print | posted on sabato 20 dicembre 2008 15:31 | Filed Under [ Visual Basic Windows Presentation Foundation ]

Powered by:
Powered By Subtext Powered By ASP.NET