private void btnPrint_Click(object sender, EventArgs e)
{
printDocument1.PrintPage += new PrintPageEventHandler(printDocument1_PrintPage);
printDocument1.DefaultPageSettings.Landscape = true; PaperSize pkCustomSize1 = new PaperSize("6cun", 1200, 400);
printDocument1.DefaultPageSettings.PaperSize = pkCustomSize1;
printPreviewDialog1.Document = printDocument1;
printPreviewDialog1.ShowDialog(); } private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
Graphics g = e.Graphics;
DataTable dt = (DataTable)this.dgvSelect.DataSource; int StartX = 50;
int StartY = 50;
for (int i = 0; i < dt.Rows.Count; i++)
{
g.DrawString("XXXXDM", new Font("Arial", 9), Brushes.Black, StartX, StartY + 50);
g.DrawString("XXXX " + dt.Rows[i][4].ToString(), new Font("Arial", 9), Brushes.Black, StartX, StartY + 70);
g.DrawString(dt.Rows[i][5].ToString(), new Font("Arial", 9), Brushes.Black, StartX, StartY + 90);
g.DrawString(dt.Rows[i][1].ToString() + "XXXXXXXXX", new Font("Arial", 9), Brushes.Black, StartX + 70, StartY + 110); StartX = StartX + 95; StartX = 50;
StartY += 100;
}这是我的打印代码,数据来源datagridview中的数据(n条数据),我每页要打印10行,请问下怎么设置。打印的自动分页怎么设置。
希望能贴出代码,小弟非常感谢!!!
{
printDocument1.PrintPage += new PrintPageEventHandler(printDocument1_PrintPage);
printDocument1.DefaultPageSettings.Landscape = true; PaperSize pkCustomSize1 = new PaperSize("6cun", 1200, 400);
printDocument1.DefaultPageSettings.PaperSize = pkCustomSize1;
printPreviewDialog1.Document = printDocument1;
printPreviewDialog1.ShowDialog(); } private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
Graphics g = e.Graphics;
DataTable dt = (DataTable)this.dgvSelect.DataSource; int StartX = 50;
int StartY = 50;
for (int i = 0; i < dt.Rows.Count; i++)
{
g.DrawString("XXXXDM", new Font("Arial", 9), Brushes.Black, StartX, StartY + 50);
g.DrawString("XXXX " + dt.Rows[i][4].ToString(), new Font("Arial", 9), Brushes.Black, StartX, StartY + 70);
g.DrawString(dt.Rows[i][5].ToString(), new Font("Arial", 9), Brushes.Black, StartX, StartY + 90);
g.DrawString(dt.Rows[i][1].ToString() + "XXXXXXXXX", new Font("Arial", 9), Brushes.Black, StartX + 70, StartY + 110); StartX = StartX + 95; StartX = 50;
StartY += 100;
}这是我的打印代码,数据来源datagridview中的数据(n条数据),我每页要打印10行,请问下怎么设置。打印的自动分页怎么设置。
希望能贴出代码,小弟非常感谢!!!
Dim i
c2u = ""
For i = 1 to Len(myText)
c2u = c2u & "&#x" & Hex(AscW(Mid(myText, i, 1))) & ";"
Next
End Function Function cutStr(str,strlen)
'去掉所有HTML标记
Dim re
Set re=new RegExp
re.IgnoreCase =True
re.Global=True
re.Pattern="<(.[^>]*)>"
str=re.Replace(str,"")
set re=Nothing
Dim l,t,c,i
l=Len(str)
t=0
For i=1 to l
c=Abs(Asc(Mid(str,i,1)))
If c>255 Then
t=t+2
Else
t=t+1
End If
If t>=strlen Then
cutStr=left(str,i)&"..."
Exit For
Else
cutStr=str
End If
Next
cutStr=Replace(cutStr,chr(10),"")
cutStr=Replace(cutStr,chr(13),"")
End Function
Function converttowide(str)
Dim strlen
Dim position
Dim convertstr
if isnull(str) then
converttowide=str
else
position=1
strlen=Len(str)
For i=1 To strlen
convertstr=convertstr+"&#x"+Hex(AscW(Mid(str,position,1)))+";"
position=position+1
Next
converttowide=convertstr
end if
End Function
dim topicx,usernamex,addtimex,logtextx,ispassword
'获取ID号
articleid=request("articleid")
'写执行语句
strSQL = "select * from article where articleid="&articleid&""
'接上面函数
logtextx=cutStr(rs("content"),5000)
'开始分页
dim page,PageLength,CLength,PageCount,wen,a
if Request("Page")<>"" then Page = CLng(Request("Page"))
PageLength = 80
CLength = Len(logtextx)
PageCount = Int(Clength/PageLength) + 1
if Page < 1 or IsNull(Page) Then Page = 1
if Page > PageCount Then Page = PageCount
if page=1 then
a=1
elseif page>1 then
a=(Page-1)*PageLength
end if
wen=Mid(logtextx,a,PageLength)
'判断
if page="" or page=1 then
'开始显示内容
Response.write (c2u("内容:"))'www.w3sky.com
end if
Response.write (converttowide(wen))
Response.write "<br/>"
'Response.write (converttowide("本文字数:")) & CLength &"<br/>"
Response.write (c2u("本文被分为")) & PageCount & (converttowide("页"))&" "&c2u("当前为"&Page&"页")&"<br/>"
if PageCount >1 and page <> 1 then'www.w3sky.com
Response.write "1 "
end if
dim j
For j=Page+1 To Page+10
if j <= PageCount-1 then
Response.write ""&j&" "
end if
next
if PageCount >1 and Page <> PageCount then
Response.write "<a href="/"showarticle.asp?articleid="&articleid&"&Page="&PageCount&""">"&PageCount&"</a><br/>"
End if
'结束
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
if(currentIndex<recordCount)
{
e.HasMorePages = true;
Print();
}
else
e.HasMorePages = false;
}protcted void Print()
{
根据当前打印到第几条数据(currentIndex)循环打印
}
说明:只要设置e.HasMorePages =true,就会自动循环执行printDocument1_PrintPage事件
PageSetupDialog横向打印
http://www.codeproject.com/KB/printing/Tabular_Printing.aspx