Kinneth Custodio Tianchon Ответов: 1

Как создать печать следующей страницы в C# с помощью datagridview


Привет, я так запутался в том, как я могу поместить следующую страницу для печати, так как другие строки не могут разобрать в печати.

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

      private void pictureBox4_Click(object sender, EventArgs e)
      {
          this.Size = new System.Drawing.Size(1094,645);
          this.SetDesktopLocation(300,200);
          dataGridView1.Size = new Size(264, 498);
          label11.Visible = true;
          panel1.Show();
          pictureBox1.Show();
          pictureBox2.Show();
          pictureBox3.Hide();
          pictureBox3.Location = new Point(1015,145);
          pictureBox4.Hide();
          pictureBox4.Location = new Point(1015,202);
      }

private void pictureBox3_Click(object sender, EventArgs e)
      {
          printPreviewDialog2.ShowDialog();
      }



      private void printDocument2_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
      {
          printDocument2.DefaultPageSettings.Landscape = true;
          int heigth = dataGridView1.Height;
          dataGridView1.Height = dataGridView1.RowCount * dataGridView1.RowTemplate.Height * 2;
          bmp = new Bitmap(this.dataGridView1.Width, this.dataGridView1.Height);
          dataGridView1.DrawToBitmap(bmp, new Rectangle(0, 0, this.dataGridView1.Width, this.dataGridView1.Height));
          dataGridView1.Height = heigth;
          e.Graphics.DrawImage(bmp, 0, 0);

      }

1 Ответов

Рейтинг:
0

OriginalGriff

Вы получаете событие PrintPage для каждой страницы, при условии, что вы установили свойство HasMorePages PrintPageEventArgs в true - по умолчанию оно равно false, поэтому, если ваш код явно не устанавливает его, вы будете печатать только одну страницу.
PrintPageEventArgs.Свойство HasMorePages (System.Рисование.Печать) | Microsoft Docs[^]

Поэтому создайте частный счетчик уровня класса "последняя напечатанная строка" и продвигайте его на "страницу" каждый раз, когда вы печатаете. Если есть больше строк для печати, то установите HasMorePages в true в конце обработчика событий, и вам будет дано другое событие почти сразу же для печати следующей страницы и повторения.


Kinneth Custodio Tianchon

Я все понял. Я просто не могу понять, как его закодировать.

OriginalGriff

В какой части? У вас есть весь код, так в чем же трудность?

Я не пытаюсь быть тупым или раздражающим - я действительно не вижу вашего экрана, поэтому я понятия не имею, что для вас легко / трудно; то, что вы пробовали: мы получаем только то, что вы печатаете для работы.

Kinneth Custodio Tianchon

(Какая часть?)Код внутри класса, который я буду создавать. К сожалению, я также не очень хорошо кодирую, я ниже новичка. Вот почему мне трудно понять, каким будет код для этого. Я искал и читал любые ответы на других сайтах, но все еще путаюсь в их кодировании. Я прошу прощения

OriginalGriff

Если вы "ниже новичка", то вам нужно сначала выучить язык и научиться делать вещи - вы не можете просто "прыгнуть" в сложные вещи, так же как водитель-ученик может сразу перейти от "подачи заявки на лицензию" к вождению гонок Формулы-1!

Вы не можете научиться делать все это правильно, задавая вопросы - потому что весь ваш подход к тому, как печатать данные, в этом случае неверен!

Kinneth Custodio Tianchon

Понял. да. Спасибо

OriginalGriff

Всегда пожалуйста!

Kinneth Custodio Tianchon

Я спрашивал некоторых людей вокруг этого сайта, и они отвечали мне по-разному, они давали мне руководства, которые симметрично соответствовали тому, что мне нужно, и там подход к моему вопросу сильно отличался от вашего подхода. Извините, я думаю, что Вы тоже близки к новичку. В любом случае, спасибо. Отличная Помощь!