โค้ด
[Spoil] คลิกเพื่อดูข้อความที่ซ่อนไว้private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
//Loop till all the grid rows not get printed
if (bFirstPage) printDocumentNewPage(sender, e);
/* */
#region _Draw Detail
int yC = 150, xC = 100;
int w = 100, h = 50;
e.Graphics.DrawString($"นิพจน์", fontDetail, new SolidBrush(Color.Black), xC + 50, yC + 5);
e.Graphics.DrawString($"สัมประสิทธิ์", fontDetail, new SolidBrush(Color.Black), xC + 230, yC + 5);
e.Graphics.DrawString($"ดีกรี", fontDetail, new SolidBrush(Color.Black), xC + 400, yC + 5);
e.Graphics.DrawString($"เป็น/ไม่เป็นเอกนาม", fontDetail, new SolidBrush(Color.Black), xC + 530, yC + 5);
for (int row = 0; row < 15; row++)
{
e.Graphics.DrawRectangle(new Pen(Color.Black, 2), new Rectangle(xC, yC, 200, h));
e.Graphics.DrawRectangle(new Pen(Color.Black, 2), new Rectangle(xC + 200, yC, 150, h));
e.Graphics.DrawRectangle(new Pen(Color.Black, 2), new Rectangle(xC + 350, yC, 150, h));
e.Graphics.DrawRectangle(new Pen(Color.Black, 2), new Rectangle(xC + 500, yC, 200, h));
if (row > 0)
{
string expression = TORServices.Maths.Expression.GenerateTerm(-10,21, RandomNumber.Randomnumber(0, 4),-4,5);
do { expression = TORServices.Maths.Expression.GenerateTerm(-10, 21, RandomNumber.Randomnumber(0, 4), -4, 5); } while (string.IsNullOrEmpty(expression.Trim()));
e.Graphics.DrawString(expression, fontExpression, new SolidBrush(Color.Black), xC + 10, yC + 5);
}
yC += h; // Move to the next row with some vertical spacing
xC = 100; // Reset the column position for the next row
}
#endregion
if (iPage > iPageAll - 1)
{
bNewPage = false;
bMorePagesToPrint = false;
}
if (bNewPage)
{
printDocumentNewPage(sender, e);
}
iPage++;
//If more lines exist, print another page.
e.HasMorePages = (bMorePagesToPrint) ? true : false;
}
กว่าจะ for loop กว่าจะเข้าฟังค์ชั่น โน่น นี่ นั่น มันก็ใช้เวลาเกือบๆ นาที/1 หน้า ครับ
ยิ่งถ้าตอนปริ้นที่ต้องสั่งหลายๆสิบหน้า จะช้ามาก
ผมอยากจะ
1. ใช้ task ในการวนลูปเพื่อสร้างข้อมูลในแต่ละแถวของหน้านั้นๆ
2. ใช้ task ในการสร้างแต่ละหน้าพร้อมๆกัน เช่น มี 30 หน้า ก็สร้าง 30 หน้าพร้อมๆกัน หรือไม่ สร้างทีละ 5-10 หน้าจนกว่าจะครบ 30 หน้า
โดยแต่ละหน้าจะมีระบุ ว่า หน้าที่../... เช่น 1/10 2/10...
พอทำได้ไม๊ ครับ
C# winApp printDocument PrintPage สามารถใช้งาน task หรือ thread ในการทำงานได้ไม๊ ครับ
โค้ด
[Spoil] คลิกเพื่อดูข้อความที่ซ่อนไว้
กว่าจะ for loop กว่าจะเข้าฟังค์ชั่น โน่น นี่ นั่น มันก็ใช้เวลาเกือบๆ นาที/1 หน้า ครับ
ยิ่งถ้าตอนปริ้นที่ต้องสั่งหลายๆสิบหน้า จะช้ามาก
ผมอยากจะ
1. ใช้ task ในการวนลูปเพื่อสร้างข้อมูลในแต่ละแถวของหน้านั้นๆ
2. ใช้ task ในการสร้างแต่ละหน้าพร้อมๆกัน เช่น มี 30 หน้า ก็สร้าง 30 หน้าพร้อมๆกัน หรือไม่ สร้างทีละ 5-10 หน้าจนกว่าจะครบ 30 หน้า
โดยแต่ละหน้าจะมีระบุ ว่า หน้าที่../... เช่น 1/10 2/10...
พอทำได้ไม๊ ครับ