WinForm/C# XtraReport 真正打印后才记录打印次数的方法

xinggang · 2018年03月26日 · 175 次阅读

目前 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();
}

很有用,如果能封装下就更好了

zenglanlan 回复

很有用,如果能封装下就更好了

要啥自行车

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册