Visual CSharp .NET - Imprimir Celdas DE UN DATAGRID Y TEXBOX

 
Vista:

Imprimir Celdas DE UN DATAGRID Y TEXBOX

Publicado por Carlos Castro (1 intervención) el 10/11/2013 23:17:45
buenas estoy tratando de que me imprima todas las celdas de un datagrid mas unos texbox con prindocument el fallo es que no logro que lo imprima como deberia ser ya que usando las cordemadas me imprime el grid en una sola linea le agradeco su ayuda o tambien si me indican en donde ver algunos ejemplo les agradesco esto es lo que tengo hasta ahora

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Imprimir
{
public partial class Form1 : Form
{
private static int visitCounter = 0; // Common to all Form1
DateTime x = DateTime.Now;

public Form1()
{
InitializeComponent();
TxtFecha.Text = String.Format("{0:dddd,M/d/yyyy}", x); // "9 09 Sun Sunday" day
}

// Variable a nivel de clase para recordar en qué punto nos hemos quedado
// la inicializamos a -1 para imprimir también las cabeceras de las columnas
private int i = 0;

private void button1_Click(object sender, EventArgs e)
{
printDocument1.Print();

}

private void printDocument1_PrintPage_1(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
// La fuente que vamos a usar para imprimir.
Font printFont = new Font("Arial", 15);
float topMargin = e.MarginBounds.Top;
float yPos = 0;
float linesPerPage = 0;
int count = 0;
string texto = "";
DataGridViewRow row;

// Calculamos el número de líneas que caben en cada página.
linesPerPage = e.MarginBounds.Height / printFont.GetHeight(e.Graphics);


// Recorremos las filas del DataGridView hasta que llegemos
// a las líneas que nos caben en cada página o al final del grid.
while (count < linesPerPage && i < this.dataGridView1.Rows.Count)
{
row = dataGridView1.Rows[i];
texto = "";

foreach (DataGridViewCell celda in row.Cells)
{
try
{
texto += celda.Value.ToString();
}
catch
{
if (string.IsNullOrWhiteSpace(texto))
{
texto = "0";
}
}
}
// Calculamos la posición en la que se escribe la línea
yPos = topMargin + (count * printFont.GetHeight(e.Graphics));

// Escribimos la línea con el objeto Graphics
Graphics g = e.Graphics;
SolidBrush Brush = new SolidBrush(Color.Black);
e.Graphics.DrawString("**********************************", printFont, Brushes.Black, 10, 20);
e.Graphics.DrawString(" NUMERO TIQUETE " + "\t" + TxtTiquete.Text, printFont, Brushes.Black, 10, 40);
e.Graphics.DrawString("**********************************", printFont, Brushes.Black, 10, 60);
e.Graphics.DrawString(TxtTiquete.Text, printFont, Brushes.Black, 10, 80);
e.Graphics.DrawString(TxtSorteo.Text, printFont, Brushes.Black, 10, 100);
e.Graphics.DrawString(TxtFecha.Text, printFont, Brushes.Black, 10, 120);
e.Graphics.DrawString(texto, printFont, Brushes.Black, 10, yPos);
e.Graphics.DrawString("**********************************", printFont, Brushes.Black, 10, 150);
count++;
i++;
}

// Una vez fuera del bucle comprobamos si nos quedan más filas
// por imprimir, si quedan saldrán en la siguente página
if (i < this.dataGridView1.Rows.Count)
e.HasMorePages = true;
else
{
// si llegamos al final, se establece HasMorePages a
// false para que se acabe la impresión
e.HasMorePages = false;

// Es necesario poner el contador a 0 porque, por ejemplo si se hace
// una impresión desde PrintPreviewDialog, se vuelve disparar este
// evento como si fuese la primera vez, y si i está con el valor de la
// última fila del grid no se imprime nada
i = 0;
visitCounter++; // Increase each time a form is loaded
}
}

private void Form1_Load(object sender, EventArgs e)
{
visitCounter++; // Increase each time a form is loaded
TxtTiquete.Text = visitCounter.ToString("0000"); // Format the counter
}


}
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder