没有合适的资源?快使用搜索试试~ 我知道了~
首页C# 自定义打印预览对话框
C# 自定义打印预览对话框

.net中自带的PrintPreviewDialog可以实现打印预览后再打印,用起来也比较方便,但是如果想进一步扩展就比较难办了。 比如,我们需要实现下面这些功能: 1、正式打印之前选择打印机,对打印机进行设置,指定打印机 2、预览时显示有背景,正式打印无背景,这样实现套打 3、预览时不做任何操作,正式打印时向数据库提交数据 这时通常的办法就不行了,因此需要使用自定义的打印预览对话框。
资源详情
资源评论
资源推荐

自定义打印预览对话框
梁欣 2011 年 12 月 1 日星期四
.net 中自带的 PrintPreviewDialog 可以实现打印预览后再打印,用起来也比较方便,但是如果想进一步扩
展就比较难办了。
比如,我们需要实现下面这些功能:
1、 正式打印之前选择打印机,对打印机进行设置,指定打印机
2、 预览时显示有背景,正式打印无背景,这样实现套打
3、 预览时不做任何操作,正式打印时向数据库提交数据
这时通常的办法就不行了,因此需要使用自定义的打印预览对话框。
我们先了解一下 PrintPreviewDialog 的工作机制:
首先,我们要有一个printDocument,然后再其printDocument1_PrintPage事件中便携打印程序。这个
事件当我们把它赋值给PrintPreviewDialog. Document时被触发,此时预览到了文件内容。当我们在预览对话
框中点击打印时,printDocument.Print()会被触发,进而printDocument1_PrintPage事件会被再次被触发,
从而输出到打印机。当然换页时,printDocument1_PrintPage事件还会被执行。
因此,一旦预览对话框出现后,我们就无法控制后面的流程了。这对这个情况,我们的解决的思路如下:
1、创建一个新的窗体,继承自PrintPreviewDialog
2、删除原来的打印按钮
3、添加新的打印按钮及单击事件(可以先显示打印机设置对话框)
4、添加属性,作为预览/打印的判断
这样,在 printDocument1_PrintPage 事件中,我们通过判断是否是真实打印,从而向 printDocument 写
入不同的内容,进而实现上述功能(数据提交到 SQL、套打等)。
具体实现如下:
1、 建立项目,在Form1以外,再建立一个窗体Form2,Form2派生于PrintPreviewDialog
public partial class Form2 : PrintPreviewDialog
2、 添加一个属性is_Print作为是否正式打印的标识
//作为正式打印标志
private bool is_Print;
public bool isPrint
{
get { return is_Print; }
set { is_Print = value; }
}
3、 添加两个方法,并编写点击事件代码
public void Add()
{
foreach (Control c in Controls)















安全验证
文档复制为VIP权益,开通VIP直接复制

评论20