Graphics g = e.Graphics; //获得绘图对象
float linesPerPage = 0; //页面的行号
float yPosition = 0;//绘制字符串的纵向位置
int count = 0; //行计数器
float leftMargin = e.MarginBounds.Left; //左边距
float topMargin = e.MarginBounds.Top; //上边距
string line = null; 行字符串
Font printFont = this.textBox.Font; //当前的打印字体
SolidBrush myBrush = new SolidBrush(Color.Black);//刷子
linesPerPage = e.MarginBounds.Height / printFont.GetHeight(g);//每页可打印的行数
//逐行的循环打印一页
while(countlinesPerPage((line=lineReader.ReadLine()) != null))
{
yPosition = topMargin + (count * printFont.GetHeight(g));
g.DrawString(line, printFont, myBrush, leftMargin, yPosition, new StringFormat());
count++;
}
如果本页打印完成而line不为空说明还有没完成的页面这将触发下一次的打印事件在下一次的打印中lineReader会
自动读取上次没有打印完的内容因为lineReader是这个打印方法外的类的成员它可以记录当前读取的位置
if(line != null)
e.HasMorePages = true;
else
e.HasMorePages = false;
}
打印设置,构造打印对话框 将对话框中设置的Document属性赋给printDocument这样会将用户的设置自动保存到printDocument
的PrinterSettings属性中
protectedvoid FileMenuItem_PrintSet_Click(object sender,EventArgs e)
{
PrintDialog printDialog = new PrintDialog();
printDialog.Document = printDocument;
printDialog.ShowDialog();
}
页面设置和打印预览与打印设置原理相同都是构造对话框将用户在对话框中的设置保存到相应的类的属性中
protectedvoid FileMenuItem_PageSet_Click(object sender,EventArgs e)
{
PageSetupDialog pageSetupDialog = new PageSetupDialog();
pageSetupDialog.Document = printDocument;
pageSetupDialog.ShowDialog();
}
打印预览
protected void FileMenuItem_PrintView_Click(object sender,EventArgs e)
{
PrintPreviewDialog printPreviewDialog = new PrintPreviewDialog();
printPreviewDialog.Document = printDocument;
try
{
printPreviewDialog.ShowDialog();
}
catch(Exception excep)
{
MessageBox.Show(excep.Message, "打印出错", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
打印就可以直接调用printDocument的Print()方法因为用户可能在打印之前还要再更改打印设置所以
在这里再次显示打印设置对话框
protected void FileMenuItem_Print_Click(object sender,EventArgs e)
{
PrintDialog printDialog = new PrintDialog();
printDialog.Document = printDocument;
lineReader = new StringReader(textBox.Text);
if (printDialog.ShowDialog() == DialogResult.OK)
{
try
{
printDocument.Print();
}
catch(Exception excep)
{
MessageBox.Show(excep.Message, "打印出错", MessageBoxButtons.OK, MessageBoxIcon.Error);
printDocument.PrintController.OnEndPrint(printDocument,new PrintEventArgs());
}
}
}
总结打印的过程是
1 在应用程序窗体初始化时构造PrintDocument对象添加 printDocument 的 PrintPage 方法
2 实现PrintPage方法4 在用户的单击事件中调用 printDocument 的 Print方法实现打印功能
在这中间可能要用到PrintDialog PrintPreviewDialog PageSetupDialog 设置和查看打印效
【vb.net打印对话框 vb打印功能】vb.net打印对话框的介绍就聊到这里吧 , 感谢你花时间阅读本站内容,更多关于vb打印功能、vb.net打印对话框的信息别忘了在本站进行查找喔 。
推荐阅读
- 微信视频号没有私密赞,微信视频号没有私密赞了吗?
- jquery实现单选全选反选,jquery实现全选和反选
- 即时战略单机游戏推荐pc,即时战略电脑单机游戏
- 电脑卫视直播软件下载,电脑版电视直播下载
- php传字节流数据 php传参数
- 外卖小程序制作一般要多久,外卖点餐小程序制作教程
- 什么游戏叫冒险王国,冒险王国语
- 小学直播小技巧,小学直播小技巧大全
- 怎么让php和数据库链接 php数据库