Compartilhar via


Visão geral do componente PrintDialog

A impressão nos Windows Forms consiste principalmente em usar o PrintDocument componente para permitir que o usuário imprima. O PrintPreviewDialog controle, PrintDialog, e PageSetupDialog os componentes fornecem uma interface gráfica familiar para usuários do sistema operacional Windows.

O PrintDialog componente é 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: imprimir todos, imprimir um intervalo de páginas selecionado ou imprimir uma seleção. Ao contar com caixas de diálogo padrão do Windows, você cria aplicativos cuja funcionalidade básica é imediatamente familiar para os usuários. O PrintDialog componente herda da CommonDialog classe.

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 imprime realmente o documento.

Trabalhando com o componente

Use o método PrintDialog.ShowDialog para exibir a caixa de diálogo em tempo de execução. Esse componente tem propriedades relacionadas a um único trabalho de impressão (PrintDocument classe) ou às configurações de uma impressora individual (PrinterSettings classe). Um dos dois, por sua vez, pode ser compartilhado por várias impressoras.

O método de mostrar a caixa de diálogo ajuda a adicionar a caixa de diálogo de impressão ao formulário. O PrintDialog componente aparece na bandeja na parte inferior do Designer de Formulários do Windows no Visual Studio.

Como capturar a entrada do usuário de um PrintDialog em tempo de execução

Você pode definir configurações de impressão no momento de projeto. Às vezes, talvez você queira alterar essas opções em tempo de execução, provavelmente devido às escolhas feitas pelo usuário. Você pode capturar a entrada do usuário para imprimir um documento usando o PrintDialog e os componentes PrintDocument. As etapas a seguir demonstram a exibição da caixa de diálogo de impressão de um documento:

  1. Adicione um PrintDialog e um componente PrintDocument ao formulário.

  2. Defina a propriedade Document do PrintDialog ao PrintDocument adicionado ao formulário.

    PrintDialog1.Document = PrintDocument1
    
    printDialog1.Document = printDocument1;
    
  3. 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();
    
  4. As escolhas de impressão do usuário na caixa de diálogo sã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 lidar com o evento PrintPage, você pode especificar o que imprimir e como imprimi-lo. As etapas a seguir demonstram a criação do trabalho de impressão:

  1. Adicione um componente PrintDocument ao formulário.

  2. Escreva o código para lidar com o evento PrintPage.

    Você precisa codificar sua própria lógica de impressão e especificar o material a ser impresso.

    Como um material a ser impresso, no exemplo de código a seguir, um gráfico de exemplo na forma de um retângulo vermelho é criado no PrintPage manipulador de eventos.

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

Talvez você também queira escrever código para os eventos BeginPrint e EndPrint. Ele ajuda a incluir um número inteiro que representa a quantidade total de páginas a serem impressas e que é decrementado conforme cada página é impressa.

Observação

Você pode adicionar um componente PrintDialog ao formulário para fornecer uma interface do usuário (interface do usuário) limpa e eficiente aos usuários. Ao definir a propriedade Document do componente PrintDialog, você pode configurar as propriedades relacionadas ao documento de impressão com o qual está trabalhando no seu 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

Com frequência, os processadores de palavras e outros aplicativos que envolvem impressão fornecem a opção de exibir uma mensagem aos usuários informando que um trabalho de impressão está concluído. Você pode fornecer essa funcionalidade em seus Windows Forms ao manipular o evento EndPrint do componente PrintDocument.

O procedimento a seguir exige que você tenha criado um aplicativo baseado no Windows com um PrintDocument componente nele. Esse procedimento é a maneira padrão de habilitar a impressão de um aplicativo baseado no Windows. Para obter mais informações sobre impressão do Windows Forms usando o PrintDocument componente, consulte Como criar trabalhos de impressão.

  1. Defina a DocumentName propriedade do PrintDocument componente.

    PrintDocument1.DocumentName = "SamplePrintApp"
    
    printDocument1.DocumentName = "SamplePrintApp";
    
  2. Escreva o código para lidar com 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.");