Visão geral do componente PrintDialog (Windows Forms .NET)
A impressão no Windows Forms consiste principalmente em usar o componente PrintDocument para permitir que o usuário imprima. Os componentes PrintPreviewDialog controle, PrintDialog e PageSetupDialog fornecem uma interface gráfica familiar para os usuários do sistema operacional Windows.
O componente PrintDialog
é uma caixa de diálogo pré-configurada usada para selecionar uma impressora, escolher as páginas a serem impressas e determinar outras configurações relacionadas à impressão em aplicativos baseados no Windows. É uma solução simples para configurações relacionadas à impressora e impressão em vez de configurar sua própria caixa de diálogo. Você pode permitir que os usuários imprimam muitas partes de seus documentos: imprima tudo, imprima um intervalo de páginas selecionado ou imprima uma seleção. Ao confiar em caixas de diálogo padrão do Windows, você cria aplicativos cuja funcionalidade básica é imediatamente familiar aos usuários. O componente PrintDialog herda da classe CommonDialog.
Normalmente, você cria uma nova instância do componente PrintDocument e define as propriedades que descrevem o que imprimir usando as classes PrinterSettings e PageSettings. A chamada para o método Print de facto imprime o documento.
Trabalhando com o componente
Utilize o método PrintDialog.ShowDialog para apresentar a caixa de diálogo em tempo de execução. Este componente tem propriedades relacionadas a um único trabalho de impressão (classePrintDocument) ou às configurações de uma impressora individual (classePrinterSettings). Um dos dois, por sua vez, pode ser compartilhado por várias impressoras.
O método show dialog box ajuda você a adicionar a caixa de diálogo de impressão ao formulário. O componente PrintDialog aparece na bandeja na parte inferior do Windows Forms Designer no Visual Studio.
Como capturar a entrada do usuário de um PrintDialog em tempo de execução
Você pode definir opções relacionadas com a impressão no momento de concepção. Às vezes, você pode querer alterar essas opções em tempo de execução, provavelmente devido a escolhas feitas pelo usuário. Você pode capturar a entrada do usuário para imprimir um documento usando os componentes PrintDialog e PrintDocument. As etapas a seguir demonstram a exibição da caixa de diálogo de impressão de um documento:
Adicione um PrintDialog e um componente PrintDocument ao formulário.
Defina a propriedade Document do PrintDialog para o PrintDocument adicionado ao formulário.
PrintDialog1.Document = PrintDocument1
printDialog1.Document = printDocument1;
Exiba o componente PrintDialog usando o método ShowDialog.
If PrintDialog1.ShowDialog() = DialogResult.OK Then PrintDocument1.Print() End If
// display show dialog and if user selects "Ok" document is printed if (printDialog1.ShowDialog() == DialogResult.OK) printDocument1.Print();
As opções de impressão do usuário na caixa de diálogo serão copiadas para a propriedade PrinterSettings do componente PrintDocument.
Como criar trabalhos de impressão
A base da impressão no Windows Forms é o componente PrintDocument — mais especificamente, o evento PrintPage. Ao escrever código para manipular o evento PrintPage, você pode especificar o que imprimir e como imprimi-lo. As etapas a seguir demonstram a criação de uma tarefa de impressão:
Adicione um componente PrintDocument ao formulário.
Escreva código para manipular o evento PrintPage.
Você terá que codificar sua própria lógica de impressão. Além disso, você terá que especificar o material a ser impresso.
Como um material para imprimir, no exemplo de código a seguir, um gráfico de exemplo na forma de um retângulo vermelho é criado no manipulador de eventos PrintPage.
Private Sub PrintDocument1_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage e.Graphics.FillRectangle(Brushes.Red, New Rectangle(100, 100, 100, 100)) End Sub
private void PrintDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) => e.Graphics.FillRectangle(Brushes.Red, new Rectangle(100, 100, 100, 100));
Você também pode escrever código para os eventos BeginPrint e EndPrint. Ajudará a incluir um número inteiro que represente o número total de páginas a imprimir, que é diminuído à medida que cada página é impressa.
Observação
Você pode adicionar um componente PrintDialog ao formulário para fornecer uma interface do usuário (UI) limpa e eficiente aos usuários. Definir a propriedade Document do componente PrintDialog permite definir propriedades relacionadas ao documento de impressão com o qual está trabalhando no formulário.
Para obter mais informações sobre as especificidades dos trabalhos de impressão do Windows Forms, incluindo como criar um trabalho de impressão programaticamente, consulte PrintPageEventArgs.
Como concluir trabalhos de impressão
Frequentemente, processadores de texto e outros aplicativos que envolvem impressão fornecerão a opção de exibir uma mensagem aos usuários informando que um trabalho de impressão foi concluído. Você pode fornecer essa funcionalidade em seus Windows Forms manipulando o evento EndPrint do componente PrintDocument.
O procedimento a seguir requer que você tenha criado um aplicativo baseado no Windows com um componente PrintDocument nele. O procedimento abaixo é a maneira padrão de habilitar a impressão a partir de um aplicativo baseado no Windows. Para obter mais informações sobre como imprimir a partir do Windows Forms usando o componente PrintDocument, consulte Como criar trabalhos de impressão.
Defina a propriedade DocumentName do componente PrintDocument.
PrintDocument1.DocumentName = "SamplePrintApp"
printDocument1.DocumentName = "SamplePrintApp";
Escreva código para manipular o evento EndPrint.
No exemplo de código a seguir, uma caixa de mensagem é exibida, indicando que o documento terminou de imprimir.
Private Sub PrintDocument1_EndPrint(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintEventArgs) Handles PrintDocument1.EndPrint MessageBox.Show(PrintDocument1.DocumentName + " has finished printing.") End Sub
private void PrintDocument1_EndPrint(object sender, System.Drawing.Printing.PrintEventArgs e) => MessageBox.Show(printDocument1.DocumentName + " has finished printing.");
.NET Desktop feedback