I need to do multipage print. However, it only print one page. How can I solve this problem? Please check my code and let me know which i made mistake.
private void Print_Form(DataSet dsPRTSET)
{
dsPRTDB = dsPRTSET;
PrintDocument pfDoc = new PrintDocument();
PrintPreviewDialog prPRVVIEW = new PrintPreviewDialog();
pfDoc.DefaultPageSettings.Landscape = false;
pfDoc.DefaultPageSettings.PaperSize = new PaperSize("PaperLetter", 850, 1100);
pfDoc.PrintPage += new PrintPageEventHandler(this.PF_PRINTPAGE);
prPRVVIEW.Document = pfDoc;
prPRVVIEW.Show();
}
private void PF_PRINTPAGE(object sender, PrintPageEventArgs e)
{
float nprLines = 0;
float nYPos = 0;
float nTopMargin = e.MarginBounds.Top;
float nLeftMargin = e.MarginBounds.Left;
Font prtFont = new Font("Courier New",10);
nprLines = e.MarginBounds.Height / prtFont.GetHeight(e.Graphics);
string cTMVAL = "";
Brush MyBrush = new SolidBrush(Color.Black);
System.Drawing.Font MyFont = new System.Drawing.Font("Courier New", 10);
Pen MyPen = new Pen(MyBrush, 0.1F);
e.Graphics.PageUnit = System.Drawing.GraphicsUnit.Millimeter;
Graphics prtG = e.Graphics;
string cSEASON = "";
if (opnSEASON1.Checked == true)
{
cSEASON = "부활";
}
else
{
cSEASON = "성탄";
}
int ml = 0;
int cl = 0;
for (ml = 0; ml <= dsPRTDB.Tables[0].Rows.Count - 1; ml++)
{
switch (cl)
{
case 0:
case 2:
case 4:
if (cl == 0)
{
cTMVAL = txtYEAR.Text + " 년 " + cSEASON + " 판공성사표";
prtG.DrawString(cTMVAL, MyFont, MyBrush, 13F, nYPos + 20F);
cTMVAL = "NO: " + dsPRTDB.Tables[0].Rows[ml]["PP_NO"].ToString();
prtG.DrawString(cTMVAL, MyFont, MyBrush, 13F, nYPos + 25F);
cTMVAL = "이름: " +
dsPRTDB.Tables[0].Rows[ml]["PP_HNAME"].ToString() +
"(" +
dsPRTDB.Tables[0].Rows[ml]["PP_FNAME"].ToString() + " " +
dsPRTDB.Tables[0].Rows[ml]["PP_LNAME"].ToString() + ")";
prtG.DrawString(cTMVAL, MyFont, MyBrush, 13F, nYPos + 35F);
cTMVAL = "세례명: " +
dsPRTDB.Tables[0].Rows[ml]["PP_SNAME"].ToString();
prtG.DrawString(cTMVAL, MyFont, MyBrush, 13F, nYPos + 40F);
cTMVAL = "구역/반 -> " +
dsPRTDB.Tables[0].Rows[ml]["PP_KUYOUK"].ToString() + "/" +
dsPRTDB.Tables[0].Rows[ml]["PP_BAN"].ToString();
prtG.DrawString(cTMVAL, MyFont, MyBrush, 13F, nYPos + 45F);
}
else if (cl == 2)
{
cTMVAL = txtYEAR.Text + " 년 " + cSEASON + " 판공성사표";
prtG.DrawString(cTMVAL, MyFont, MyBrush, 13F, nYPos + 85F);
cTMVAL = "NO: " + dsPRTDB.Tables[0].Rows[ml]["PP_NO"].ToString();
prtG.DrawString(cTMVAL, MyFont, MyBrush, 13F, nYPos + 90F);
cTMVAL = "이름: " +
dsPRTDB.Tables[0].Rows[ml]["PP_HNAME"].ToString() +
"(" +
dsPRTDB.Tables[0].Rows[ml]["PP_FNAME"].ToString() + " " +
dsPRTDB.Tables[0].Rows[ml]["PP_LNAME"].ToString() + ")";
prtG.DrawString(cTMVAL, MyFont, MyBrush, 13F, nYPos + 100F);
cTMVAL = "세례명: " +
dsPRTDB.Tables[0].Rows[ml]["PP_SNAME"].ToString();
prtG.DrawString(cTMVAL, MyFont, MyBrush, 13F, nYPos + 105F);
cTMVAL = "구역/반 -> " +
dsPRTDB.Tables[0].Rows[ml]["PP_KUYOUK"].ToString() + "/" +
dsPRTDB.Tables[0].Rows[ml]["PP_BAN"].ToString();
prtG.DrawString(cTMVAL, MyFont, MyBrush, 13F, nYPos + 110F);
}
else
{
cTMVAL = txtYEAR.Text + " 년 " + cSEASON + " 판공성사표";
prtG.DrawString(cTMVAL, MyFont, MyBrush, 13F, nYPos + 140F);
cTMVAL = "NO: " + dsPRTDB.Tables[0].Rows[ml]["PP_NO"].ToString();
prtG.DrawString(cTMVAL, MyFont, MyBrush, 13F, nYPos + 145F);
cTMVAL = "이름: " +
dsPRTDB.Tables[0].Rows[ml]["PP_HNAME"].ToString() +
"(" +
dsPRTDB.Tables[0].Rows[ml]["PP_FNAME"].ToString() + " " +
dsPRTDB.Tables[0].Rows[ml]["PP_LNAME"].ToString() + ")";
prtG.DrawString(cTMVAL, MyFont, MyBrush, 13F, nYPos + 155F);
cTMVAL = "세례명: " +
dsPRTDB.Tables[0].Rows[ml]["PP_SNAME"].ToString();
prtG.DrawString(cTMVAL, MyFont, MyBrush, 13F, nYPos + 160F);
cTMVAL = "구역/반 -> " +
dsPRTDB.Tables[0].Rows[ml]["PP_KUYOUK"].ToString() + "/" +
dsPRTDB.Tables[0].Rows[ml]["PP_BAN"].ToString();
prtG.DrawString(cTMVAL, MyFont, MyBrush, 13F, nYPos + 165F);
}
break;
case 1:
case 3:
case 5:
if (cl == 1)
{
cTMVAL = txtYEAR.Text + " 년 " + cSEASON + " 판공성사표";
prtG.DrawString(cTMVAL, MyFont, MyBrush, 110F, nYPos + 20F);
cTMVAL = "NO: " + dsPRTDB.Tables[0].Rows[ml]["PP_NO"].ToString();
prtG.DrawString(cTMVAL, MyFont, MyBrush, 110F, nYPos + 25F);
cTMVAL = "이름: " +
dsPRTDB.Tables[0].Rows[ml]["PP_HNAME"].ToString() +
"(" +
dsPRTDB.Tables[0].Rows[ml]["PP_FNAME"].ToString() + " " +
dsPRTDB.Tables[0].Rows[ml]["PP_LNAME"].ToString() + ")";
prtG.DrawString(cTMVAL, MyFont, MyBrush, 110F, nYPos + 35F);
cTMVAL = "세례명: " +
dsPRTDB.Tables[0].Rows[ml]["PP_SNAME"].ToString();
prtG.DrawString(cTMVAL, MyFont, MyBrush, 110F, nYPos + 40F);
cTMVAL = "구역/반 -> " +
dsPRTDB.Tables[0].Rows[ml]["PP_KUYOUK"].ToString() + "/" +
dsPRTDB.Tables[0].Rows[ml]["PP_BAN"].ToString();
prtG.DrawString(cTMVAL, MyFont, MyBrush, 110F, nYPos + 45F);
}
else if (cl == 3)
{
cTMVAL = txtYEAR.Text + " 년 " + cSEASON + " 판공성사표";
prtG.DrawString(cTMVAL, MyFont, MyBrush, 110F, nYPos + 85F);
cTMVAL = "NO: " + dsPRTDB.Tables[0].Rows[ml]["PP_NO"].ToString();
prtG.DrawString(cTMVAL, MyFont, MyBrush, 110F, nYPos + 90F);
cTMVAL = "이름: " +
dsPRTDB.Tables[0].Rows[ml]["PP_HNAME"].ToString() +
"(" +
dsPRTDB.Tables[0].Rows[ml]["PP_FNAME"].ToString() + " " +
dsPRTDB.Tables[0].Rows[ml]["PP_LNAME"].ToString() + ")";
prtG.DrawString(cTMVAL, MyFont, MyBrush, 110F, nYPos + 100F);
cTMVAL = "세례명: " +
dsPRTDB.Tables[0].Rows[ml]["PP_SNAME"].ToString();
prtG.DrawString(cTMVAL, MyFont, MyBrush, 110F, nYPos + 105F);
cTMVAL = "구역/반 -> " +
dsPRTDB.Tables[0].Rows[ml]["PP_KUYOUK"].ToString() + "/" +
dsPRTDB.Tables[0].Rows[ml]["PP_BAN"].ToString();
prtG.DrawString(cTMVAL, MyFont, MyBrush, 110F, nYPos + 110F);
}
else
{
cTMVAL = txtYEAR.Text + " 년 " + cSEASON + " 판공성사표";
prtG.DrawString(cTMVAL, MyFont, MyBrush, 110F, nYPos + 140F);
cTMVAL = "NO: " + dsPRTDB.Tables[0].Rows[ml]["PP_NO"].ToString();
prtG.DrawString(cTMVAL, MyFont, MyBrush, 110F, nYPos + 145F);
cTMVAL = "이름: " +
dsPRTDB.Tables[0].Rows[ml]["PP_HNAME"].ToString() +
"(" +
dsPRTDB.Tables[0].Rows[ml]["PP_FNAME"].ToString() + " " +
dsPRTDB.Tables[0].Rows[ml]["PP_LNAME"].ToString() + ")";
prtG.DrawString(cTMVAL, MyFont, MyBrush, 110F, nYPos + 155F);
cTMVAL = "세례명: " +
dsPRTDB.Tables[0].Rows[ml]["PP_SNAME"].ToString();
prtG.DrawString(cTMVAL, MyFont, MyBrush, 110F, nYPos + 160F);
cTMVAL = "구역/반 -> " +
dsPRTDB.Tables[0].Rows[ml]["PP_KUYOUK"].ToString() + "/" +
dsPRTDB.Tables[0].Rows[ml]["PP_BAN"].ToString();
prtG.DrawString(cTMVAL, MyFont, MyBrush, 110F, nYPos + 165F);
}
break;
}
cl++;
if (cl > 5)
{
e.HasMorePages = true;
cl = 0;
nYPos += 255F;
}
}
e.HasMorePages = false;
dsPRTDB.Dispose();
}