目前 WinForm 框架的打印功能如果想记录打印次数不知道大家如何实现,如果在主窗体菜单栏的“打印”按钮中记录次数明显是不合理的,因为用户最终不一定会将打印命令发送到打印机,可能只是看一下打印预览就关闭了,为了记录真正打印次数请看下面的代码。
这里的核心代码只有一句,就是注册 XtraReport 对象的 PrintProgress 事件,这个事件会在打印命令真正被发送到打印机后才会触发,便需要注意一点,如果打印有多页会多次触发,这时如何只记录一次打印次数,大家动下脑筋吧。
/// <summary>
/// 打印预览
/// </summary>
private void simpleButton2_Click(object sender, EventArgs e)
{
_printObject = new XtraReport();
_printObject.DisplayName = "报表打印测试";
_printObject.DataSource = _dt;
if (_drLayout["PrintLayout"] != DBNull.Value)
{
MemoryStream memoryStream = new MemoryStream();
byte[] array = _drLayout["PrintLayout"] as byte[];
if (array != null)
{
memoryStream.Write(array, 0, array.Length);
_printObject.LoadLayout(memoryStream);
}
}
//打印发送到打印机后动作
_printObject.PrintProgress += (s, arg) => { MessageBox.Show("发送打印机了!逮住你了!"); };
_printObject.ShowPreview();
}