Member 12923819 Ответов: 1

Как распечатать лабораторный отчет?


int y = 365;
            for (int i = NumberofItemsperpagesofar; i < dataGridView1.Rows.Count; i++)
            {

               
                NumberofItemsperpage++;
                if (NumberofItemsperpage <= 10)
                {
                    NumberofItemsperpagesofar++;
                    if (NumberofItemsperpagesofar <= dataGridView1.Rows.Count)
                    {
                        Pen m = new Pen(Brushes.Black, 2.5f);
                        // e.Graphics.DrawString(dataGridView1.Rows[i].Cells[0].Value.ToString(), new Font("Microsoft Sans Serif", 16, FontStyle.Regular), Brushes.Black, new Point(15, y - 4));
                        try
                        {
                            if (dataGridView1.Rows[i].Cells[0].Value == dataGridView1.Rows[i].Cells[0].Value)
                            {
                                e.Graphics.DrawString(dataGridView1.Rows[0].Cells[0].Value.ToString(), new Font("Times New Roman", 18, FontStyle.Bold), Brushes.Black, new Point(10, 355));

                                // e.Graphics.DrawLine(q, new Point(0, y + 24), new Point(1000, y + 24));
                                e.Graphics.DrawString(dataGridView1.Rows[i].Cells[1].Value.ToString(), new Font("Calibri", 15, FontStyle.Bold), Brushes.Black, new Point(7, y+ 17));
                                e.Graphics.DrawString(dataGridView1.Rows[i].Cells[4].Value.ToString(), new Font("Calibri", 16, FontStyle.Bold), Brushes.Black, new Point(310, y +17));
                                e.Graphics.DrawString(dataGridView1.Rows[i].Cells[3].Value.ToString(), new Font("Calibri", 16, FontStyle.Bold), Brushes.Black, new Point(545, y +17));
                                e.Graphics.DrawString(dataGridView1.Rows[i].Cells[2].Value.ToString(), new Font("Calibri", 16, FontStyle.Bold), Brushes.Black, new Point(690, y +17));
                            }
                           else if (dataGridView1.Rows[i].Cells[0].Value != dataGridView1.Rows[i].Cells[0].Value)
                            {
                                e.Graphics.DrawString(dataGridView1.Rows[0].Cells[0].Value.ToString(), new Font("Times New Roman", 18, FontStyle.Bold), Brushes.Black, new Point(10, y+25));
                            }
                        }
                        catch (Exception ex) { MessageBox.Show(ex.Message); }
                        y += 30;
                    }
                    else
                    {
                        e.HasMorePages = false;
                    }
                }
                else
                {
                    NumberofItemsperpage = 0;
                    e.HasMorePages = true; return;
                }
            }


Что я уже пробовал:

я хочу напечатать значение ячейки[0] один раз и все остальные ячейки каждый раз, и когда значение ячейки[0] изменится, а затем напечатать снова, пожалуйста, помогите мне решить эту проблему

ZurdoDev

Затем напишите код, чтобы делать то, что вы хотите. Где ты застрял?

Michael_Davies

Ваш код не имеет смысла, вы проверяете значение ячейки[0], чтобы оно было равно самому себе, оно всегда будет таким. Затем вы проверяете ячейку[0], не равную самой себе, на else, которая, поскольку она является else для противоположного условия, не требуется, плюс она никогда не будет выполняться, так как ячейка[0] всегда равна ячейке[0].

Этот код выглядит как часть процедуры печати, обычно существует другой код, который вызовет эту процедуру, в этом коде вам нужно сохранить значение ячейки[0] и сравнить с этим значением, когда есть разница, ячейка[0] изменилась, затем сохранить новое значение ячейки[0] и выполнить печать.