0

I have a datagridview control on my form , I want to print that datagridview, I used following code but it doesn't work

PaintEventArgs myPaintArgs = new PaintEventArgs(e.Graphics, new Rectangle(new 
     Point(InvoiceViewergrid.Location.X, InvoiceViewergrid.Location.Y), this.Size));
     this.InvokePaint(InvoiceViewergrid, myPaintArgs);

2 Answers 2

1

I hope this help you any ways http://www.codeproject.com/Articles/16670/DataGridView-Printing-by-Selecting-Columns-and-Row

Sign up to request clarification or add additional context in comments.

Comments

0

You can use this code, hope you've got what you needed here.

    //Button-Print:
    private void button5_Click(object sender, EventArgs e)
    {
       printPreviewDialog1.ShowDialog();
        i = 0;
     }

    //GlobalValue.
    int i = 0;

    //printDocument
    private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
    {
        e.Graphics.DrawString("\r\n\r\n"+ label14.Text + "\r\n" + label11.Text + "\t \t \t \t \t \t" + label6.Text, label11.Font, Brushes.Black, 50, 0);

        int height = 0;
        int width = 0;

        Pen p = new Pen(Brushes.Black,2.5f);

        //Column1
        #region userIDCol
        e.Graphics.FillRectangle(Brushes.DarkGray, new Rectangle(100, 100, dataGridView1.Columns[0].Width, dataGridView1.Rows[0].Height));
        e.Graphics.DrawRectangle(p, new Rectangle(100, 100, dataGridView1.Columns[0].Width, dataGridView1.Rows[0].Height));
        e.Graphics.DrawString(dataGridView1.Columns[0].HeaderText.ToString(), dataGridView1.Font, Brushes.Black, new Rectangle(100, 100, dataGridView1.Columns[0].Width, dataGridView1.Rows[0].Height));
        #endregion

        //Column2
        #region loginTimeCol
        e.Graphics.FillRectangle(Brushes.DarkGray, new Rectangle(100 + dataGridView1.Columns[0].Width, 100, dataGridView1.Columns[0].Width, dataGridView1.Rows[0].Height));
        e.Graphics.DrawRectangle(p, new Rectangle(100 + dataGridView1.Columns[0].Width, 100, dataGridView1.Columns[0].Width, dataGridView1.Rows[0].Height));
        e.Graphics.DrawString(dataGridView1.Columns[1].HeaderText.ToString(), dataGridView1.Font, Brushes.Black, new Rectangle(100 + dataGridView1.Columns[0].Width, 100, dataGridView1.Columns[0].Width, dataGridView1.Rows[0].Height));
        #endregion

        //Column3
        #region logoutTimeCol
        e.Graphics.FillRectangle(Brushes.DarkGray, new Rectangle(200 + dataGridView1.Columns[0].Width, 100, dataGridView1.Columns[0].Width, dataGridView1.Rows[0].Height));
        e.Graphics.DrawRectangle(p, new Rectangle(200 + dataGridView1.Columns[0].Width, 100, dataGridView1.Columns[0].Width, dataGridView1.Rows[0].Height));
        e.Graphics.DrawString(dataGridView1.Columns[2].HeaderText.ToString(), dataGridView1.Font, Brushes.Black, new Rectangle(200 + dataGridView1.Columns[0].Width, 100, dataGridView1.Columns[0].Width, dataGridView1.Rows[0].Height));
        #endregion

        height = 100;

        while (i < dataGridView1.Rows.Count)
        {
            if(height > e.MarginBounds.Height)
            {
                height = 100;
                e.HasMorePages = true;
                return;
            }
            height += dataGridView1.Rows[0].Height;

            //Column1
            e.Graphics.DrawRectangle(p, new Rectangle(100, height, dataGridView1.Columns[0].Width, dataGridView1.Rows[0].Height));
            e.Graphics.DrawString(dataGridView1.Rows[i].Cells[0].FormattedValue.ToString(), dataGridView1.Font, Brushes.Black, new Rectangle(100, height, dataGridView1.Columns[0].Width, dataGridView1.Rows[0].Height));

            //Column2
            e.Graphics.DrawRectangle(p, new Rectangle(100 + dataGridView1.Columns[0].Width, height, dataGridView1.Columns[0].Width, dataGridView1.Rows[0].Height));
            e.Graphics.DrawString(dataGridView1.Rows[i].Cells[1].FormattedValue.ToString(), dataGridView1.Font, Brushes.Black, new Rectangle(100 + dataGridView1.Columns[0].Width, height, dataGridView1.Columns[0].Width, dataGridView1.Rows[0].Height));

            //Column3
            e.Graphics.DrawRectangle(p, new Rectangle(200 + dataGridView1.Columns[0].Width, height, dataGridView1.Columns[0].Width, dataGridView1.Rows[0].Height));
            e.Graphics.DrawString(dataGridView1.Rows[i].Cells[2].FormattedValue.ToString(), dataGridView1.Font, Brushes.Black, new Rectangle(200 + dataGridView1.Columns[0].Width, height, dataGridView1.Columns[0].Width, dataGridView1.Rows[0].Height));

            i++;
        }
    }

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.