Печать 4 ячеек из каждой строкиC#

Место общения программистов C#
Ответить
Anonymous
 Печать 4 ячеек из каждой строки

Сообщение Anonymous »

У меня есть следующая таблица данных:



rowNR
L1
L2
L3
L4




row1
Листинг1
Листинг2
Листинг 3
Листинг 4


row2Объявление 1
Листинг 2
Листинг 3
Листинг 4

row3
Листинг1
Листинг2
Листинг3
Листинг 4


row4
Листинг 1Листинг 2
Листинг 3
Листинг 4


row5
Листинг 1
Листинг 2
Листинг 3
Листинг 4



Я хотел бы распечатать каждую ячейку «Список» из каждой строки на новую страницу.пример: страница 1 - Листинг1(строка1), страница2 - Листинг2(строка1)...поэтому в приведенном выше примере мне понадобится 20 страниц.
**Проблема в следующем: ** Номер страницы становится бесконечным. и никогда не останавливается.
Мой код выглядит так:
private void printDocument1_PrintPage(object sender, PrintPageEventArgs e)
{
var doc = sender as PrintDocument;
var curX = e.MarginBounds.X + 11;
var curY = e.MarginBounds.Y + 11;
Pen pen = new Pen(ColorTranslator.FromHtml("#FFBD2D"), 1f);
int checkedrows = 0;
int sum = 0;

using (var fontNormal = new System.Drawing.Font("Arial", 8))
using (var sf = new StringFormat())
{
sf.Alignment = sf.LineAlignment = StringAlignment.Center;
int itemHeight = (int)fontNormal.GetHeight(e.Graphics) + 1;

for (int row = x; row < dt.Rows.Count; row++)
{
for (int j = y; j < dt.Columns.Count; j++)
{
if (x != row || y != j)
{
x = row;
y = j;
e.HasMorePages = true;
return;
}
else
{
if ("Listing1" == dt.Columns[j].ColumnName || "Listing2" == dt.Columns[j].ColumnName || "Listing3" == dt.Columns[j].ColumnName || "Listing4" == dt.Columns[j].ColumnName)
{
if (dt.Rows[row][j].ToString() == "")
continue;

var imgRect = new Rectangle(0, 0, 160, 160);
var labelRect = new Rectangle(
imgRect.Right,
imgRect.Bottom,
imgRect.Width,
itemHeight);

using (var qrImage = Utils.QRCode.GenerateQRCODE(dt.Rows[row][j].ToString()))
e.Graphics.DrawImage(qrImage, imgRect);

e.Graphics.DrawLine(pen, curX, curY, curX, curY + 139);//||right
e.Graphics.DrawLine(pen, curX, curY, curX + 196, curY);// -up

e.Graphics.RotateTransform(90);
e.Graphics.DrawString(dt.Rows[row][j].ToString(),
fontNormal, Brushes.Black,
labelRect, sf);
e.Graphics.ResetTransform();
//curX = imgRect.Right; //+ 30

e.HasMorePages = false;
}
}
}
}
}
refreshprintbtn.Enabled = true;
groupBox1.Text = "QR CODE | Codes: " + checkedrows + " / " + sum;
}


Подробнее здесь: https://stackoverflow.com/questions/792 ... -every-row
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»