private void button2_Click(object sender, System.EventArgs e)
 {
    this.dataGridSource = dataGrid1;
    //this.dataGridTable = new DataTable();
    //this.dataGridTable = (DataTable)this.dataGridSource.DataSource;
    //this.colsCount = this.dataGridTable.Columns.Count;
    this.colsCount=this.dataGrid1.VisibleColumnCount;
    Print();
  }
//----------------------
 public Font PrintFont
 {
    get
      {
 return printFont;
       }
    set
      {
 printFont = value;
      }
 }
 //-----------------------
 public int PrintRecordNumber
 {
get
 {
   return this.printRecordNumber;
 }
 set
 {
   printRecordNumber = value;
 }
 }
 //----------------------
 public void Print()
 {
   try
     {
 this.printDataGrid = new PrintDocument();
          //this.printDataGrid.PrintPage += new PrintPageEventHandler(printDataGrid_PrintPage);
 //this.printDataGrid.Print();  //打印机设置对话框
 this.pageSetup = new PageSetupDialog();
          this.pageSetup.PageSettings = this.printDataGrid.DefaultPageSettings;      if(this.pageSetup.ShowDialog() == DialogResult.Cancel)
 {
   return;
 }

解决方案 »

  1.   

    //当前页是横向还是纵向打印
         //计算当前页总共可以打印的行数
         if(this.printDataGrid.DefaultPageSettings.Landscape)
    {
              this.printLines =      this.printDataGrid.DefaultPageSettings.PaperSize.Width / this.printFont.Height + 5);
     }
         else
    {
              this.printLines = this.printDataGrid.DefaultPageSettings.PaperSize.Height / (this.printFont.Height + 5);
     } //如果用户选择自定义纸张大小打印,则按B5纸打印,不管实际纸张大小
    if (this.printDataGrid.DefaultPageSettings.PaperSize.PaperName.ToString() == "custom")
    {
    } //预览窗口
     this.printPriview = new PrintPreviewDialog();
     this.printPriview.Document = this.printDataGrid;
     this.printPriview.ShowDialog();
       }
       catch(Exception ex)
       {
        MessageBox(0,"发生错误。\n错误信息为: " + ex.Message,"发生错误",0);
        }
     }
     //----------------------
     private void printDataGrid_PrintPage(object sender,System.Drawing.Printing.PrintPageEventArgs e)
     {
     //A4纸  A4 纸,210 x 297 毫米。
     //B5纸 B5 纸,182 x 257 毫米。
     try
     {
       string strPrint; //当前要打印的文本
       SolidBrush drawBrush = new SolidBrush(Color.Blue); //当前画笔颜色         int x = 0; //当前要打印的文本的横坐标
    int y = 0; //当前要打印的文本的列坐标  PointF drawPoint = new PointF(x,y);          int curRow; //当前要打印的行 //还有多少条记录没有打印
              this.printRecordLeave = this.dataGridTable.Rows.Count - this.printRecordComplete;
      

  2.   

    http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=64998
      

  3.   

    你是用到水晶报表的吗?如果是就这样做:
    先在水晶报表(自定新建一个叫EditIt吧)上你所要的自定义位置上插入一个文本对象(就叫text1吧)
    在程序里这样控制!
    using CrystalDecisions.CrystalReports.Engine;//using水晶报表类
    TextObject text;//定义一个文本对象
    custom.Print.EditIt MyPort=new custom.Print.EditIt();//定义报表
    text = MyPort.ReportDefinition.ReportObjects[text1] as TextObject;
    这样定义后你就可以这样附值了
    text.Text = 你的文本框中的数据;
    MyPort.PrintToPrinter(1,false,0,0);//试试打印出来你想要的效果了!
      

  4.   

    custom.Print.EditIt MyPort=new custom.Print.EditIt();//定义报表
    custom是我自己的类如果你的水晶报表位置与你的程序位置同一目录下的就可以直接引用
    EditIt MyPort=new EditIt();//定义报表
      

  5.   

    text = MyPort.ReportDefinition.ReportObjects["text1"] as TextObject;//Sorry忘记了加双引号~