private void printButton_Click(object sender, EventArgs e)
{
try
{
this.configFile=Application.StartupPath+"//Config1.xml";
try
{
printFont = new Font("Arial", 10);
PrintDocument pd = new PrintDocument();
pd.PrintPage += new PrintPageEventHandler(this.pd_PrintPage);
pd.Print();
}
finally
{
//streamToPrint.Close();
}
}
catch(Exception ex)
{
//MessageBox.Show(ex.Message);
}
}
// The PrintPage event is raised for each page to be printed.
private void pd_PrintPage(object sender, PrintPageEventArgs ev)
{
int n=1;
String drawString="";
if(this.printDS.Tables.Count<=0)
{
//如果该表格为0 则从数据源复制表格
this.printDS=ds.Copy();
}
for(int j=0;j<this.printDS.Tables[0].Rows.Count&&n<2;j++)
{
for(int i=1;i<this.printDS.Tables[0].Columns.Count;i++)
{
DataRow row=this.printDS.Tables[0].Rows[j];
// Create string to draw.
drawString = this.printDS.Tables[0].Rows[j][i].ToString();
// Create font and brush.
//Font drawFont = new Font("宋体", 14);
Font drawFont=new Font(GetString("PointFont","family"),float.Parse(GetString("PointFont","size")));
SolidBrush drawBrush = new SolidBrush(Color.Black);
// Create point for upper-left corner of drawing.
string tmp="Point"+i.ToString();
float x = this.GetXPoint(tmp);
float y = this.GetYPoint(tmp);
// Set format of string.
StringFormat drawFormat = new StringFormat();
//drawFormat.FormatFlags = StringFormatFlags.DirectionRightToLeft;
// Draw string to screen.
ev.Graphics.DrawString(drawString, drawFont, drawBrush, x, y, drawFormat);
}
//去掉已打印的
n++;
this.printDS.Tables[0].Rows.RemoveAt(j);
// j--;
}
//判定是否已经打印完
if(this.printDS.Tables[0].Rows.Count>0)
{
ev.HasMorePages=true;
}
else
{
//this.printDS.Tables[0].Rows.RemoveAt(this.printDS.Tables[0].Rows.Count);
//删除该表格,如果不删除的话,或在打印到最后一行的时候报错,当然不会显示,但会影响程序效率
this.printDS.Tables.RemoveAt(0);
ev.HasMorePages=false;
}
private float GetXPoint(string key)
{
//建立连接
float retValue=0;
XmlDocument xmlDoc=new XmlDocument();
try
{
xmlDoc.Load(configFile);
retValue=float.Parse(xmlDoc["Config"][key].Attributes["XPoint"].InnerText);
MessageBox.Show(retValue.ToString());
return retValue;//0--没有找到
}
catch(Exception ee)
{
return 0;
}
}
/// <summary>
/// 获得Y坐标
/// </summary>
/// <param name="key">关键引索</param>
/// <returns></returns>
private float GetYPoint(string key)
{
//建立连接
float retValue=0;
XmlDocument xmlDoc=new XmlDocument();
try
{
xmlDoc.Load(configFile);
retValue=float.Parse(xmlDoc["Config"][key].Attributes["YPoint"].InnerText);
return retValue;//0--没有找到
}
catch(Exception ee)
{
return 0;
}
}
/// <summary>
/// 获得任意属性值
/// </summary>
/// <param name="key1">引索</param>
/// <param name="key2">属性</param>
/// <returns></returns>
private string GetString(string key1 ,string key2)
{
//建立连接PointFont","size
string retValue="";
XmlDocument xmlDoc=new XmlDocument();
try
{
xmlDoc.Load(configFile);
retValue=(xmlDoc["Config"][key1].Attributes[key2].InnerText);
return retValue;//0--没有找到
}
catch(Exception ee)
{
return "";
}
}
private void printButton2_Click(object sender, System.EventArgs e)
{
try
{
// streamToPrint = new StreamReader("C://MyFile.txt");
this.configFile=Application.StartupPath+"//Config2.xml";
MessageBox.Show(GetString("PointFont", "family").ToString(), GetString("PointFont", "size").ToString());
return;
try
{
printFont = new Font("Arial", 10);
PrintDocument pd = new PrintDocument();
pd.PrintPage += new PrintPageEventHandler(this.pd_PrintPage);
pd.Print();
}
finally
{
//streamToPrint.Close();
}
}
catch(Exception ex)
{
//MessageBox.Show(ex.Message);
}
}
private void button1_Click(object sender, System.EventArgs e)
{
this.configFile=Application.StartupPath+"//Config1.xml";
MessageBox.Show(this.GetXPoint("Point1").ToString());
}