using System;
using System.Collections.Generic;
using System.Drawing.Printing;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
private DataGrid dataGridList;
private PrintDocument printFile;
public Form1()
{
InitializeComponent();
List<DataMember> members = new List<DataMember>();
DataMember dm = new DataMember();
dm.Price = 100.00M;
dm.Date = DateTime.Today;
members.Add(dm);
dm = new DataMember();
dm.Price = 123456.789M;
dm.Date = DateTime.Now.Date;
members.Add(dm);
SetDataGridTableStyle();
dataGridList.DataSource = members;
printFile = new PrintDocument();
printFile.PrintPage += new PrintPageEventHandler(printFile_PrintPage);
}
private void printFile_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
using (PaintEventArgs myPaintArgs = new PaintEventArgs(e.Graphics, dataGridList.Bounds))
{
this.InvokePaint(dataGridList, myPaintArgs);
}
}
private void dataGridList_MouseUp(object sender, MouseEventArgs e)
{
DataGrid.HitTestInfo info = dataGridList.HitTest(e.Location);
if (info.Type == DataGrid.HitTestType.Caption)
printFile.Print(); // 单击标题时,打印。
}
private void SetDataGridTableStyle()
{
Application.CurrentCulture = System.Globalization.CultureInfo.GetCultureInfo("zh-CN");
DataGridTableStyle memberTable = new DataGridTableStyle();
memberTable.MappingName = typeof(List<DataMember>).Name;
DataGridTextBoxColumn priceColumn = new DataGridTextBoxColumn();
priceColumn.Alignment = HorizontalAlignment.Center;
priceColumn.MappingName = "Price";
priceColumn.HeaderText = "价格";
priceColumn.Format = "¥#,##0.00;¥-#,##0.00;¥0.00";
memberTable.GridColumnStyles.Add(priceColumn);
DataGridTextBoxColumn dateColumn = new DataGridTextBoxColumn();
dateColumn.Alignment = HorizontalAlignment.Center;
dateColumn.MappingName = "Date";
dateColumn.HeaderText = "日期";
dateColumn.Format = "yyyy-MM-dd";
memberTable.GridColumnStyles.Add(dateColumn);
dataGridList = new DataGrid();
dataGridList.TableStyles.Add(memberTable);
dataGridList.CaptionText = "泛型数据源";
dataGridList.Dock = DockStyle.Fill;
dataGridList.FlatMode = true;
dataGridList.ReadOnly = true;
dataGridList.MouseUp += new MouseEventHandler(dataGridList_MouseUp);
this.Controls.Add(this.dataGridList);
}
}
class DataMember
{
private Decimal price;
private DateTime date;
public Decimal Price
{
get { return price; }
set { price = value; }
}
public DateTime Date
{
get { return date; }
set { date = value; }
}
}
}