[STAThread]
static void Main()
{
Application.Run(new Form1());
}
private void btnPrint_Click(object sender, System.EventArgs e)
{
//调用打印方法
classPrint objclassPrint = new classPrint();
objclassPrint.printOut("d:/ipmsg.log",true);
}
}
class classPrint
{
private Font printFont;//用于设置打印数据的FONT
private TextReader printtext;//用于获取打印的数据
private void PrintLogic(object sender,PrintPageEventArgs e)
{
float linespage=0;//页面的总行数
float ypos=0;//打印内容的边距
string line=string.Empty;//接受数据的变量
float leftMargin = e.MarginBounds.Left;//打印内容的左边距
float topMargin = e.MarginBounds.Top;//打印内容的上边距
int count = 0;//计数器
//计算也面的总行数
linespage =e.MarginBounds.Height/printFont.GetHeight(e.Graphics);
//开始按行打印
while(count<linespage&&(line = printtext.ReadLine())!=null)
{//如果打印到最后一行或者没有打印内容,推出打印循环
//设置打印内容的高度
ypos=topMargin+(count*printFont.GetHeight(e.Graphics));
//设置打印信息的Font
e.Graphics.DrawString(line,printFont,Brushes.Red,leftMargin,ypos,new StringFormat());
count++;
}
//是否需要打印另外一页
e.HasMorePages=line!=null?true:false;
}
public void printOut(string data,bool pre)
{
//获取要打印的信息
using(printtext = (TextReader)new StreamReader(data))
{
//设置打印信息的Font
printFont = new Font("area",10);
//声明打印类
PrintDocument objPrintDocument = new PrintDocument();
//打印类的委托事件
objPrintDocument.PrintPage+=new PrintPageEventHandler(PrintLogic);
if(pre)
{
//声名打印御览类
PrintPreviewDialog objPrintPreviewDialog = new PrintPreviewDialog();
objPrintPreviewDialog.Document=objPrintDocument;//指定打印源
objPrintPreviewDialog.ShowDialog();
}
objPrintDocument.Print();//开始打印
}
}
}
发表于 @ 2008年05月13日 09:02:48|评论(loading...)|编辑