Come stampare un modulo (Windows Form .NET)

Come parte del processo di sviluppo, in genere si vuole stampare una copia di Windows Form. Nell'esempio di codice seguente viene illustrato come stampare una copia del modulo corrente utilizzando il CopyFromScreen metodo .

Esempio

Per eseguire il codice di esempio, aggiungere due componenti a un modulo con le impostazioni seguenti:

Object Property\Event Valore
Button Name Button1
Click Button1_Click
PrintDocument Name PrintDocument1
PrintPage PrintDocument1_PrintPage

Il codice seguente viene eseguito quando Button1 si fa clic su . Il codice crea un Graphics oggetto dal form e ne salva il contenuto in una Bitmap variabile denominata memoryImage. Viene chiamato il PrintDocument.Print metodo , che richiama l'evento PrintPage . Il gestore eventi di stampa disegna la memoryImage bitmap nell'oggetto della pagina della Graphics stampante. Quando viene restituito il codice del gestore eventi di stampa, la pagina viene stampata.

namespace Sample_print_win_form1
{
    public partial class Form1 : Form
    {
        Bitmap memoryImage;
        public Form1()
        {
            InitializeComponent();
        }

        private void Button1_Click(object sender, EventArgs e)
        {
            Graphics myGraphics = this.CreateGraphics();
            Size s = this.Size;
            memoryImage = new Bitmap(s.Width, s.Height, myGraphics);
            Graphics memoryGraphics = Graphics.FromImage(memoryImage);
            memoryGraphics.CopyFromScreen(this.Location.X, this.Location.Y, 0, 0, s);

            printDocument1.Print();
        }

        private void PrintDocument1_PrintPage(
           System.Object sender,
           System.Drawing.Printing.PrintPageEventArgs e)
        {
            e.Graphics.DrawImage(memoryImage, 0, 0);
        }
    }
}
Public Class Form1
    
    Dim memoryImage As Bitmap

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
         
        Dim myGraphics As Graphics = Me.CreateGraphics()
        Dim s As Size = Me.Size
        memoryImage = New Bitmap(s.Width, s.Height, myGraphics)
        Dim memoryGraphics As Graphics = Graphics.FromImage(memoryImage)
        memoryGraphics.CopyFromScreen(Me.Location.X, Me.Location.Y, 0, 0, s)
        
        PrintDocument1.Print()
        
    End Sub

    Private Sub PrintDocument1_PrintPage(
        ByVal sender As System.Object, 
        ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage

        e.Graphics.DrawImage(memoryImage, 0, 0)
        
    End Sub
End Class

Programmazione efficiente

Le seguenti condizioni possono generare un'eccezione:

  • Non si dispone dell'autorizzazione necessaria per accedere alla stampante.

  • Non è installata alcuna stampante.

Protezione .NET

Per eseguire questo esempio di codice, è necessario disporre dell'autorizzazione per accedere alla stampante usata con il computer.

Vedi anche