[ Foro de C# ]

imprimir datagriw con printdocument

12-Jun-2014 19:48
Invitado (ana)
3 Respuestas

Requiero imprimir un DataGriw con PrintDocument encontre un codigo q es para imprimr pero al momento de mandarlo a imprimir solo aparece en letra miniatura y la tabla asta la esquina superior izquierda ya trate de darle formato al datagriw pero sololo muestra en interfaz no en la inpresion.
:/
espero puedan apoyarme!!


13-Jun-2014 13:51
Nacho Cabanes (+84)

Si ver nada del código fuente, lo más que puedo decirte es que en la referencia oficial (MSDN) tienes la lista de métodos y propiedades de PrintDocument, junto con un ejemplo de su uso:

http://msdn.microsoft.com/es-es/library/system.drawing.printing.printdocument.aspx


13-Jun-2014 22:04
Invitado (ana)

estoy obteniendo la informacion por fechas donde se asigna al dataGridView este es el codigo:


private void button1_Click(object sender, EventArgs e)
        {
            using (SqlConnection Conn = conexion.ObtnerConn())
            {
             string cadena = "select num_p, [Empleado].nombre, [Herramienta].nombre_H , fecha_p, fecha_e  FROM prestamo, Empleado, Herramienta where dbo.prestamo.clave_H = dbo.Herramienta.clave_H and dbo.prestamo.id_E = dbo.Empleado.id_E and fecha_p between '" + dateTimePicker1.Text + "'and '" + dateTimePicker2.Text + "'";
                
                SqlDataAdapter adaptador = new SqlDataAdapter(cadena,Conn);
                    
                    DataSet ds = new DataSet();
                     adaptador.Fill(ds);
                    dataGridView1.DataSource = ds.Tables[0];
           }
        }

     
en el objeto printDocument1 coloque esta linea para q mande a imprimir de acuerdo aun tutorial q vi de como mandar a imprimir utilizando este objeto:


        private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
        {
            PaintEventArgs myPaintArgs = new PaintEventArgs(e.Graphics, new Rectangle(new Point(10, 10), this.Size));
            this.InvokePaint(dataGridView1, myPaintArgs);                               
        }


      en este boton se manda aimprimir y la linea q comente arriba es la que esta con doble diagonal solo cambia el formato en la interfaz pero no al imprimirse:


 private void button2_Click(object sender, EventArgs e)
        {
            printDocument1.Print();
           // this.dataGridView1.DefaultCellStyle.Font = new Font("Tahoma", 10);
              
        }              



16-Jun-2014 11:03
Nacho Cabanes (+84)

Es que tal y como lo tienes ahí, primero mandas a imprimir y después cambias la apariencia. Deberías cambiar la apariencia antes de llamar a InvokePaint.

Además, el cambio que estás haciendo es el "DefaultCellStyle", el estilo de celda por defecto, que debería afecta sólo a las celdas a las que no se les haya dado ningún otro formato.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)