Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: Zzombi en 9 Agosto 2009, 02:50 am



Título: Problema al imprimir contenido de un RichTextBox
Publicado por: Zzombi en 9 Agosto 2009, 02:50 am
Hola todos.

Bueno colegas acudo a vuestra ayuda por un problema que me ha mantenido bien ocupado pero no he logrado resolverlo, esta bien complicado.

resulta que necesito imprimir lo que se escribe en un richtextbox pero el problema es que no se imprime como se ve, me explico.
Digamos que en el richtextbox se ve el contenido de esta forma:
    xxxxxxxxx  xxxxxxx
    xxxxxxxxxxxxxxxxx
    xxxxxxx xxxxxxx xx
    xxx xxxxxxx xxxx x

pero al momento de imprimir la impresión sale así:
xxxxxxx xxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxx xxxxxxxxx xxxxxx x

es decir una linea recta...
para que no ocurra esto e convertido el contenido en un array y cada 60 caracteres añado un ENTER y se soluciona pero claramente la estructura del contenido cambia.

bueno espero haberme explicado bien.
Saludos.





Título: Re: Problema al imprimir contenido de un RichTextBox
Publicado por: ¨°o.O (ßa¢Kg|姧) O.o° en 10 Agosto 2009, 14:52 pm
Lo que puedes hacer hacer el salto de línia ahora hago un ejemplo y lo pongo
En tu manejador del evento imprimir de tu printdocument en mi caso

Código
  1. private void MyPrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
  2. {
  3. int topMargin = printDocument1.DefaultPageSettings.Margins.Top;
  4. int leftMargin = printDocument1.DefaultPageSettings.Margins.Left;
  5. float linesPerPage = 0;
  6. float verticalPosition = 0;
  7. float horizontalPosition = leftMargin;
  8. string textLine = null;
  9. int currentLine = 0;
  10. linesPerPage = 66;
  11.  
  12. while (currentLine < linesPerPage)
  13. {
  14. textLine = (aqui va tu fuente de lineas de texto de tu documento, una coleccion o un stream o q se yo pero q contenga todas las lineas de texto)
  15. if(textLine == null)
  16. {
  17. break;
  18. }
  19.  
  20. verticalPosition = topMargin + currentLine * myFont.GetHeight(e.Graphics);
  21.  
  22. e.Graphics.DrawString(textLine, myFont, myBrush, horizontalPosition, verticalPosition);
  23. currentLine += 1;
  24. }
  25.  
  26. if (textLine != null)
  27. {
  28. e.HasMorePages = true;
  29. }
  30. else
  31. {
  32. e.HasMorePages = false;
  33. }
  34. }
Recuerda que sigue actuando hasta que  E.HASMOREPAGES SEA FALSO