我想在winform下打印datagrid里的内容,可是,只能打印当前页,不知道该怎么判断分页,请各位大师帮帮忙,问题解决后马上结账,我的代码在下面:
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) 



try
{
Graphics g=e.Graphics; 
lon=0; 
wid=0; 
this.Pw=this.printDocument1.DefaultPageSettings.PaperSize.Width; //打印的纸张宽度
this.Ph=this.printDocument1.DefaultPageSettings.PaperSize.Height; //纸张高度
this.Bm=this.printDocument1.DefaultPageSettings.Margins.Bottom; //下边距
this.Tm=this.printDocument1.DefaultPageSettings.Margins.Top; 
this.Lm=this.printDocument1.DefaultPageSettings.Margins.Left; 
this.Rm=this.printDocument1.DefaultPageSettings.Margins.Right; 
this.Headhi=style.PreferredRowHeight; 
SolidBrush hf=new SolidBrush(this.dataGrid1.HeaderForeColor); 
SolidBrush hb=new SolidBrush(this.dataGrid1.HeaderBackColor); 
SolidBrush tf=new SolidBrush(this.dataGrid1.ForeColor); 
Pen pl=new Pen(Color.Black,1); 
StringFormat cellfor=new StringFormat(); 
cellfor.Alignment=StringAlignment.Center; 
Rectangle f=new Rectangle(0,0,0,0); 
f.Offset(Tm,Lm);  int[] rowhight=new int[this.ds.Tables["Person"].Rows.Count+1];
foreach(DataGridTextBoxColumn column in style.GridColumnStyles) 

f.Height=Headhi; 
f.Width=column.Width; 
g.FillRectangle(hb,f); 
f.Offset(0,3); 
g.DrawString(column.HeaderText,this.dataGrid1.HeaderFont,hf,f,cellfor); 
f.Offset(column.Width,-3); 

lon+=Headhi; 
rowhight[0]=Headhi; 
int j=0; 
foreach(DataGridTextBoxColumn column in style.GridColumnStyles) 

f=new Rectangle(0,0,0,0); 
f.Offset(Tm+wid,Lm+Headhi+5); 
for(int i=0;i<this.ds.Tables["Person"].Rows.Count;i++) 
{       
f.Height=this.dataGrid1.GetCellBounds(i, 0).Height ; 
f.Width=column.Width; 
Object context=this.dataGrid1[i,j]; 
if(i%2!=0) 

f.Offset(0,-5); 
g.FillRectangle(new SolidBrush(style.AlternatingBackColor),f); 
f.Offset(0,5); 

g.DrawString(context.ToString(),this.dataGrid1.Font,tf,f,cellfor); 
f.Offset(0,f.Height); 

j++; 
wid+=column.Width; 
             

int lm=Lm; 
          
for(int i=0;i<ds.Tables["Person"].Rows.Count;i++) 

lon+=this.dataGrid1.GetCellBounds(i,0).Height; 
rowhight[i+1]=dataGrid1.GetCellBounds(i,0).Height; 

for(int i=0;i<=ds.Tables["Person"].Rows.Count+1;i++) 
{  g.DrawLine(pl,Tm,lm,Tm+wid,lm); 
if(i==ds.Tables["Person"].Rows.Count+1) 
break; 
lm+=rowhight[i]; 

int tm=Tm; 
foreach(DataGridTextBoxColumn column in style.GridColumnStyles) 

g.DrawLine(pl,tm,Lm,tm,Lm+lon); 
tm+=column.Width; 

g.DrawLine(pl,tm,Lm,tm,Lm+lon); 

}
catch(Exception ex)
{
MessageBox.Show(ex.Message.ToString());
}
}