Печать формы (Windows Forms .NET)

В процессе разработки обычно требуется печатать копии формы Windows Forms. В приведенном ниже примере кода показано, как напечатать копию текущей формы с помощью метода CopyFromScreen.

В следующем примере в форму добавляется кнопка с именем Button1 . Когда кнопка Button1 нажимается, она сохраняет форму в памяти, а затем отправляет ее в объект печати.

Пример

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

    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
End Class

Отказоустойчивость

При следующих условиях возможно возникновение исключения:

  • У вас нет разрешения на доступ к принтеру.

  • Принтер не установлен.

Безопасность в .NET

Чтобы запустить этот пример кода, необходимо иметь разрешение на доступ к принтеру, используемому с компьютером.

См. также