Página 1 de 1

impressão c#

MensagemEnviado: 11 Dez 2017 09:36
por charllie
oi, sou novo por aqui e gostaria da ajuda de vocês.

preciso fazer a impressão de um listview, a impressao é de uma tabela e tals

eu peguei esse codigo da internet:

private void button1_Click(object sender, EventArgs e)
{
try
{



string texto = "texto de impressão";
leitor = new StringReader(texto);
PrintPreviewDialog printPreviewDialog1 = new PrintPreviewDialog();
printPreviewDialog1.Document = this.printDocument1;
printPreviewDialog1.FormBorderStyle = FormBorderStyle.Fixed3D;
printPreviewDialog1.ShowDialog();
}
catch (Exception exp)
{
MessageBox.Show(" Erro : " + exp.Message.ToString());
}
}

private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
//variaveis usadas para definir as configurações da impressão
float linhasPorPagina = 0;
float yPosicao = 0;
int contador = 0;
float margemEsquerda = e.MarginBounds.Left;
float margemSuperior = e.MarginBounds.Top;
string linha = null;
Font fonteImpressao = this.richTextBox1.Font;
SolidBrush mCaneta = new SolidBrush(Color.Black);

// Define o numero de linhas por pagina, usando MarginBounds.
linhasPorPagina = e.MarginBounds.Height / fonteImpressao.GetHeight(e.Graphics);

// Itera sobre a string usando StringReader, imprimindo cada linha
while (contador < linhasPorPagina && ((linha = leitor.ReadLine()) != null))
{
// calcula a posicao da proxima linha baseada
// na altura da fonte de acordo com o dispositivo de impressão
yPosicao = margemSuperior + (contador * fonteImpressao.GetHeight(e.Graphics));

// desenha a proxima linha no controle RichTextBox
e.Graphics.DrawString(linha, fonteImpressao, mCaneta, margemEsquerda, yPosicao, new StringFormat());
contador++;
}
// Verifica se existe mais linhas para imprimir
if (linha != null)
e.HasMorePages = true;
else
e.HasMorePages = false;

//libera recursos
mCaneta.Dispose();
}


o código imprime e tals, mas eu gostaria de muda-lo para ele criar uma tabela na impressão.
do jeito que ele esta ai ele imprimi um texto

se alguem puder ajudar :)

Re: impressão c#

MensagemEnviado: 12 Dez 2017 10:19
por KrafT
Esse código aí me lembra quando gerava relatórios no Clipper Summer 87... Se fazia tudo na unha, o "must" era preencher a sobra do formulário contínuo com "*" em diagonal. "Os cara phodão", criavam a logo da empresa contando as batidas das agulhas da impressora...

Eu não sou um expert em C#, só uso para fazer aplicativos de uso pessoal, nos quais a interface é a última preocupação e relatórios eu puxo do banco de dados. Mas se tivesse que imprimir coisas direto do aplicativo, usaria algo como o Crystal Reports que se usava no Delphi. Deve existir algo semelhante para Visual Studio/C#.

Re: impressão c#

MensagemEnviado: 12 Dez 2017 13:51
por Red Neck Guy
Então, falei pro Charllie que tem que usar um gerador de reports pra fazer algo bonito.
Ou
Caso queria fazer na unha, mas bonito, tem que usar o GDI+ pra criar uma área de desenho onde possa utilizar as primitivas de desenho(line,dot,string,bitmap). Com essas ferramentas, desenha o relatório em "memória" e depois envia para a impressora. Pensando bem, acho que pra imprimi uma simples lista de objetos eu faria assim, pois tu tem controle total.

Re: impressão c#

MensagemEnviado: 12 Dez 2017 13:55
por Red Neck Guy