Visão geral do componente PrintDialog (Windows Forms .NET)

A impressão no Windows Forms consiste principalmente em usar o componente para permitir que o PrintDocument usuário imprima. O PrintPreviewDialog controle PrintDialog e PageSetupDialog os componentes fornecem uma interface gráfica familiar aos 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 habilitar os usuários a imprimir muitas partes de seus documentos: imprimir tudo, imprimir um intervalo de páginas selecionadas ou uma seleção. Com base nas caixas de diálogo padrão do Windows, crie aplicativos cuja funcionalidade básica é imediatamente familiar aos usuários. O PrintDialog componente herda da CommonDialog classe.

Normalmente, você cria uma nova instância do PrintDocument componente e define as propriedades que descrevem o que imprimir usando as PrinterSettings classes e PageSettings . Chamar para o método realmente imprime o Print 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 (classe) ou às configurações de uma impressora individual (PrintDocumentPrinterSettingsclasse). Uma das duas, por sua vez, pode ser compartilhada 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 PrintDialog componente 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 à impressão em tempo de design. Às vezes, você pode querer alterar essas opções em tempo de execução, provavelmente por causa de escolhas feitas pelo usuário. Você pode capturar a entrada do usuário para imprimir um documento usando os PrintDialogPrintDocument componentes e . As etapas a seguir demonstram a exibição da caixa de diálogo de impressão de um documento:

  1. Adicione um e um PrintDialogPrintDocument componente ao formulário.

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

    PrintDialog1.Document = PrintDocument1
    
    printDialog1.Document = printDocument1;
    
  3. Exiba o componente usando o PrintDialogShowDialog método.

    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 opções de impressão do usuário da caixa de diálogo serão copiadas para a PrinterSettings propriedade do PrintDocument componente.

Como criar trabalhos de impressão

A base da impressão no Windows Forms é o componente — mais especificamente, o PrintDocumentPrintPage evento. Ao escrever código para manipular o evento, você pode especificar o PrintPage que imprimir e como imprimi-lo. As etapas a seguir demonstram a criação do trabalho de impressão:

  1. Adicione um PrintDocument componente ao formulário.

  2. Escreva código para manipular o PrintPage evento.

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

Você também pode escrever código para os BeginPrint eventos e EndPrint . Isso ajudará a incluir um inteiro que representa o número total de páginas a serem impressas que é diminuído à medida que cada página é impressa.

Observação

Você pode adicionar um PrintDialog componente ao formulário para fornecer uma interface do usuário (UI) limpa e eficiente para os usuários. A definição Document da propriedade do PrintDialog componente permite que você defina propriedades relacionadas ao documento de impressão com o qual você 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 para exibir uma mensagem aos usuários de que um trabalho de impressão foi concluído. Você pode fornecer essa funcionalidade em seus Windows Forms manipulando o EndPrintPrintDocument evento do componente.

O procedimento a seguir requer que você tenha criado um aplicativo baseado no Windows com um PrintDocument componente nele. O procedimento fornecido abaixo é a maneira padrão de habilitar a impressão de um aplicativo baseado no Windows. Para obter mais informações sobre como imprimir a partir 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 código para manipular o EndPrint evento.

    No exemplo de código a seguir, uma caixa de mensagem é exibida, indicando que o documento terminou a impressão.

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