Печать формы (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
Чтобы запустить этот пример кода, необходимо иметь разрешение на доступ к принтеру, используемому с компьютером.
См. также
.NET Desktop feedback
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по