一个打印的好例子
2009-03-14 16:34 苏飞 阅读(744) 评论(0) 编辑 收藏 举报阅读全文:http://www.cckan.net/forum.php?mod=viewthread&tid=37
先拉下面两个控件
然后看一下代码就明白了
每打印一页的时候要使用的事件
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
Graphics graphics = e.Graphics;
e.Graphics.DrawString("社区便民 服务百姓", new Font("Arial", 13f, FontStyle.Bold), Brushes.Black, 10, 1);
redstr();
Font ziti = new Font(new FontFamily("宋体"), 10F, FontStyle.Bold);
//行高
float h = ziti.GetHeight(graphics);
//每一页的行数
float hangshu = (int)(e.MarginBounds.Height / h); ;
//在边矩
//float left = e.MarginBounds.Left;
float left = 3;
//float shang = e.MarginBounds.Top;
float shang = 45;
string str = "";
for (int i = 0; i <= hangshu; i++)
{
str = sr.ReadLine();
if (str == null)
{
e.HasMorePages = false;
return;
}
float x = left;
float y = shang + i * h;
graphics.DrawString(str, ziti, new SolidBrush(Color.Black), x, y, new StringFormat());
}
e.HasMorePages = true;
}
{
Graphics graphics = e.Graphics;
e.Graphics.DrawString("社区便民 服务百姓", new Font("Arial", 13f, FontStyle.Bold), Brushes.Black, 10, 1);
redstr();
Font ziti = new Font(new FontFamily("宋体"), 10F, FontStyle.Bold);
//行高
float h = ziti.GetHeight(graphics);
//每一页的行数
float hangshu = (int)(e.MarginBounds.Height / h); ;
//在边矩
//float left = e.MarginBounds.Left;
float left = 3;
//float shang = e.MarginBounds.Top;
float shang = 45;
string str = "";
for (int i = 0; i <= hangshu; i++)
{
str = sr.ReadLine();
if (str == null)
{
e.HasMorePages = false;
return;
}
float x = left;
float y = shang + i * h;
graphics.DrawString(str, ziti, new SolidBrush(Color.Black), x, y, new StringFormat());
}
e.HasMorePages = true;
}
打印的内容
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
//打印
private StringReader sr;
//要打印的数据
private void redstr()
{
StringBuilder builder1 = new StringBuilder();
builder1.Append("......................");
builder1.Append("\n");
builder1.Append("名 称: 中国铁路");
builder1.Append("\n");
builder1.Append("车 次: " + txtCheCi.Text.Trim());
builder1.Append("\n");
builder1.Append("起始站: " + txtStart.Text.Trim());
builder1.Append("\n");
builder1.Append("到达站: " + txtEnd.Text.Trim());
builder1.Append("\n");
builder1.Append("席 别: " + cbbxibie.Text.Trim());
builder1.Append("\n");
builder1.Append("数 量: " + nudNumber.Value.ToString().Trim() + "张");
builder1.Append("\n");
builder1.Append("单 价: " + txtPrice.Text.Trim() + "元");
builder1.Append("\n");
string shoufei = user.tran1(objOfficeInfo.ofPara1, nudNumber.Value * Convert.ToDecimal(txtPrice.Text.Trim()));
builder1.Append("手续费: " + shoufei + "元");
builder1.Append("\n");
builder1.Append("总 价: " + (Convert.ToDecimal(shoufei) + nudNumber.Value * Convert.ToDecimal(txtPrice.Text.Trim())).ToString().Trim() + "元");
builder1.Append("\n");
builder1.Append("订票时间:");
builder1.Append("\n");
builder1.Append(timeStart.Value.ToString().Trim() + "-\n" + timeEnd.Value.ToString().Trim());
builder1.Append("\n");
builder1.Append("......................");
builder1.Append("\n");
builder1.Append("注:铁路客运车次、车票变化");
builder1.Append("\n");
builder1.Append("以铁路客运官方信息为准,此");
builder1.Append("\n");
builder1.Append("单据仅作订票凭证。");
builder1.Append("\n");
builder1.Append("打印时间:\n" + DateTime.Now.ToString());
builder1.Append("\n");
builder1.Append("营业编号:" + objOfficeInfo.ofLogin);
builder1.Append("\n");
builder1.Append("营业电话:" + objOfficeInfo.ofPhone);
builder1.Append("\n");
string str = objOfficeInfo.ofAddress.ToString();
string str1 = "";
if (str.Length > 1)
{
str1 += str.Substring(0, 1);
for (int i = 1; i < str.Length; i++)
{
if (i % 7 != 0)
{
str1 += str.Substring(i, 1);
}
else
{
str1 += str.Substring(i, 1) + "\n";
}
}
}
else
{
str1 = str;
}
builder1.Append("营业地址:" + str1);
builder1.Append("\n");
builder1.Append("......................");
builder1.Append("\n");
builder1.Append("全国加盟热线:15639808693");
builder1.Append("\n");
sr = new StringReader(builder1.ToString());
}
private StringReader sr;
//要打印的数据
private void redstr()
{
StringBuilder builder1 = new StringBuilder();
builder1.Append("......................");
builder1.Append("\n");
builder1.Append("名 称: 中国铁路");
builder1.Append("\n");
builder1.Append("车 次: " + txtCheCi.Text.Trim());
builder1.Append("\n");
builder1.Append("起始站: " + txtStart.Text.Trim());
builder1.Append("\n");
builder1.Append("到达站: " + txtEnd.Text.Trim());
builder1.Append("\n");
builder1.Append("席 别: " + cbbxibie.Text.Trim());
builder1.Append("\n");
builder1.Append("数 量: " + nudNumber.Value.ToString().Trim() + "张");
builder1.Append("\n");
builder1.Append("单 价: " + txtPrice.Text.Trim() + "元");
builder1.Append("\n");
string shoufei = user.tran1(objOfficeInfo.ofPara1, nudNumber.Value * Convert.ToDecimal(txtPrice.Text.Trim()));
builder1.Append("手续费: " + shoufei + "元");
builder1.Append("\n");
builder1.Append("总 价: " + (Convert.ToDecimal(shoufei) + nudNumber.Value * Convert.ToDecimal(txtPrice.Text.Trim())).ToString().Trim() + "元");
builder1.Append("\n");
builder1.Append("订票时间:");
builder1.Append("\n");
builder1.Append(timeStart.Value.ToString().Trim() + "-\n" + timeEnd.Value.ToString().Trim());
builder1.Append("\n");
builder1.Append("......................");
builder1.Append("\n");
builder1.Append("注:铁路客运车次、车票变化");
builder1.Append("\n");
builder1.Append("以铁路客运官方信息为准,此");
builder1.Append("\n");
builder1.Append("单据仅作订票凭证。");
builder1.Append("\n");
builder1.Append("打印时间:\n" + DateTime.Now.ToString());
builder1.Append("\n");
builder1.Append("营业编号:" + objOfficeInfo.ofLogin);
builder1.Append("\n");
builder1.Append("营业电话:" + objOfficeInfo.ofPhone);
builder1.Append("\n");
string str = objOfficeInfo.ofAddress.ToString();
string str1 = "";
if (str.Length > 1)
{
str1 += str.Substring(0, 1);
for (int i = 1; i < str.Length; i++)
{
if (i % 7 != 0)
{
str1 += str.Substring(i, 1);
}
else
{
str1 += str.Substring(i, 1) + "\n";
}
}
}
else
{
str1 = str;
}
builder1.Append("营业地址:" + str1);
builder1.Append("\n");
builder1.Append("......................");
builder1.Append("\n");
builder1.Append("全国加盟热线:15639808693");
builder1.Append("\n");
sr = new StringReader(builder1.ToString());
}
开始打印
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
try
{
printDocument1.Print();
}
catch (Exception)
{
MessageBox.Show("打印时出错");
}
{
printDocument1.Print();
}
catch (Exception)
{
MessageBox.Show("打印时出错");
}
本人的博客不再维护从2013年就不再维护了
需要我帮助的朋友请到我的个人论坛 http://www.sufeinet.com 进行讨论,感谢大家对我的支持!