none
Aviso que a impressão terminou. RRS feed

  • Pergunta

  • Gente.

    Estou querendo ser avisado por uma caixa de mensagem que a impressão de um determinado arquivo terminou.

    Utilizando o evento document.Endprint que olhei no site da Microsoft, estou com o seguinte código:

     public Form1()
            {
                printDocument3.DocumentName = @"d:\taveiratxt";
                this.printDocument3.EndPrint += new System.Drawing.Printing.PrintEventHandler (this.printDocument3_EndPrint);
    	}
    
    	// imprime um arquivo ao clicar neste botão
            private void printButton_Click(object sender, EventArgs e)
            {
                ReadFile();
                printDocument1.Print();
    aqui onde termina a impressão, como chamo a rotina printDocument3 para dizer que a impressão acabou?
    Estou usando essa chamada abaixo, mas está dando erro. Falta alguma coisa dentro do parêntesis?
                printDocument3_EndPrint();
            }
    
    
    	private void printDocument3_EndPrint(object sender,
            System.Drawing.Printing.PrintEventArgs e)
            {
                MessageBox.Show(printDocument3.DocumentName +
                   " terminou de imprimir.");
            }

    A impressão acaba e não aparece o MessageBox. O que deve estar faltando?

    Como a chamada é feita a printDocument3_EndPrint no término da impressão?

    Sinceramente não entendi bem a explicação no site da Microsoft.

    Link de referência: https://msdn.microsoft.com/pt-br/library/90ac3w6d%28v=vs.110%29.aspx

    Obrigado.


    prof. Taveira


    terça-feira, 26 de maio de 2015 19:52

Respostas

  • José Carlos, 

    1º Ponto 

     printDocument3.DocumentName = @"d:\taveiratxt"; 

    Esse não é o nome do seu arquivo em disco. Ok ? DocumentName refere-se ao nome do arquivo a ser impresso. Isso é enviado ao spoller de impressão do windows para que seja feita a impressão. 

    2º Ponto 

    Você está fazendo a chamada do evento que indicara que a impressão terminou no seu método construtor. Ou seja, antes do seu Form Carregar, geralmente esse não é o comportamento desejado. 

    3º Ponto 

    Você começou com a trabalhar com o printDocument3 e mandou imprimir o printDocument1. 

    Fiz um exemplo abaixo que exibe a MessageBox ao termino da impressão. O evento responsável por isso é o EndPrint.

    private void printButton_Click(object sender, EventArgs e)
            {
                printDocument1.DocumentName = "Nome do arquivo";
                printDocument1.PrintPage += printDocument1_PrintPage;
                printDocument1.Print();
    
                printDocument1.EndPrint += printDocument1_EndPrint;
            }
    
            void printDocument1_PrintPage(object sender, PrintPageEventArgs e)
            {
                e.Graphics.DrawString("Exemplo",  new Font("Arial", 80, FontStyle.Bold), Brushes.Black, 150, 125);
            }
    
            void printDocument1_EndPrint(object sender, System.Drawing.Printing.PrintEventArgs e)
            {
                MessageBox.Show("A impressão acabou");
            }

    Acredito que o artigo abaixo possa te ajudar. 

    http://www.macoratti.net/12/05/c_prt1.htm

     

    • Sugerido como Resposta Pedro Xavier terça-feira, 30 de junho de 2015 11:18
    • Marcado como Resposta Marcos SJ quarta-feira, 10 de fevereiro de 2016 19:55
    segunda-feira, 29 de junho de 2015 19:00