c# winform 打印DataGridView日期数据格式,格式化日期格式,可多页并可选择列打印

foreach (DataGridViewCell Cel in GridRow.Cells)
{
        if (!Cel.OwningColumn.Visible) continue;
                if (!SelectedColumns.Contains(Cel.OwningColumn.HeaderText))
                        continue;

        // For the TextBox Column
        if (((Type) ColumnTypes[i]).Name == "DataGridViewTextBoxColumn" ||((Type) ColumnTypes[i]).Name == "DataGridViewLinkColumn")
        {
	        e.Graphics.DrawString([color=red]Cel.FormattedValue[/color].ToString(), Cel.InheritedStyle.Font, 
                 new SolidBrush(Cel.InheritedStyle.ForeColor),
                 new RectangleF((int)ColumnLefts[i], (float)tmpTop,
                 (int)ColumnWidths[i], (float)CellHeight), StrFormat);
         }
         // For the Button Column
         else if (((Type) ColumnTypes[i]).Name == "DataGridViewButtonColumn")
         {
                  CellButton.Text = Cel.Value.ToString();
                  CellButton.Size = new Size((int)ColumnWidths[i], CellHeight);
                  Bitmap bmp =new Bitmap(CellButton.Width, CellButton.Height);
                  CellButton.DrawToBitmap(bmp, new Rectangle(0, 0,bmp.Width, bmp.Height));
                  e.Graphics.DrawImage(bmp, new Point((int)ColumnLefts[i], tmpTop));
          }
          // For the CheckBox Column
          else if (((Type) ColumnTypes[i]).Name == "DataGridViewCheckBoxColumn")
          {.....}
          // Drawing Cells Borders 
          e.Graphics.DrawRectangle(Pens.Black, new Rectangle((int)ColumnLefts[i], 
          tmpTop, (int)ColumnWidths[i], CellHeight));

          i++;

}


重点就是Cel.FormattedValue了,这样就按照DataGridView的格式化格式打印了
而Cel.Value是按照单元格关联的

附加一个可以实现打印DataGridView的打印源码

黑色头发:http://heisetoufa.iteye.com

你可能感兴趣的:(C++,c,单元测试,C#,WinForm)