PrintPage method is printing twice consecutively

113 views Asked by At

I want to print a document once using PrintDocument_PrintPage method in C#, but it is printing twice consecutively. Can you please help me with this?

Example of print result

It is printing the draft lines on top of each other as seen in the image, and it is doing this for each line. What I want to do is to print each of these draft lines seven times on each page and continue with the next line on the next page. Please help me with this.



public static int sayfano=1, k=0, j = 0, a = 0;
        public static int satir;


private void button2_Click(object sender, EventArgs e)
{
    // Yazdırma işlemi için yazdırma önizleme diyaloğunu gösterin
    PrintPreviewDialog printPreviewDialog = new PrintPreviewDialog();
    // Yazdırılacak belgeyi ayarlayın
    printDocument1.DocumentName = "DataGridView Print";
    printDocument1.DefaultPageSettings.Landscape = false; // Belge yatay yönde olacak
    printDocument1.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(printDocument1_PrintPage);
    // Yazdırma işlemi için yazdırma önizleme diyaloğunu gösterin
    printPreviewDialog.Document = printDocument1;
    printPreviewDialog.ShowDialog();
}

private int sayfa = 1;
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
    // Verileri oku ve diziye ata
    string[] ad_soyad = new string[dataGridView1.RowCount];
    string[] telefon = new string[dataGridView1.RowCount];
    string[] adres = new string[dataGridView1.RowCount];
    string[] ilce = new string[dataGridView1.RowCount];
    string[] aciklama = new string[dataGridView1.RowCount];

    int i = 0;
    foreach (DataGridViewRow satirs in dataGridView1.Rows)
    {
        ad_soyad[i] = satirs.Cells[2].Value.ToString();
        telefon[i] = satirs.Cells[4].Value.ToString();
        adres[i] = satirs.Cells[0].Value.ToString();
        ilce[i] = satirs.Cells[3].Value.ToString();
        aciklama[i] = satirs.Cells[5].Value.ToString();
        i++;
    }
    // font ve brush ayarları
    Font yazi_tip = new Font("Arial", 14);
    SolidBrush kalem = new SolidBrush(Color.Black);
    Pen kalems = new Pen(Color.Black);

    // Sayfa içeriği
    int j = 0, a = 0, k;
    for ( k = sayfa - 1; k < satir; k++)
    {
        // Verileri sayfaya yazdır
        e.Graphics.DrawString(ad_soyad[k], yazi_tip, kalem, 40, 30 * (a + 4 + j));
        e.Graphics.DrawString(telefon[k], yazi_tip, kalem, 40, 30 * (a + 5 + j));
        e.Graphics.DrawString(adres[k], yazi_tip, kalem, 40, 30 * (a + 6 + j));
        e.Graphics.DrawString(ilce[k], yazi_tip, kalem, 450, 30 * (a + 4 + j));
        e.Graphics.DrawString(aciklama[k], yazi_tip, kalem, 450, 30 * (a + 5 + j));
        Point[] points = { new Point(50, 30 * (a + 7 + j)), new Point(780, 30 * (a + 7 + j)) };
        e.Graphics.DrawLines(kalems, points);
        j += 4;
               
        // Sayfa sayısına göre belirleme yap
        if (a == 6)
        {
            a = 0;
            a ++;
            sayfa++; // bir sonraki sayfaya geç
            e.HasMorePages = true; // yeni sayfa olduğunu belirt
            break; // döngüden çık
        }

        a++; 
        e.Graphics.DrawString("Sayfa " + sayfa, yazi_tip, kalem, 750, 1130);
    }
}
0

There are 0 answers