你好,伙计们可以帮助我如何使用控制按钮打印我的收据吗?
这是我的屏幕截图[1]" https://ibb.co/kfk8SF如果我点击" SAVE PRINT"按钮出现预览对话框 我只想通过单击按钮自动打印我想要的报告,没有出现对话框
答案 0 :(得分:0)
您可以先获取默认打印机名称(在打开报告查看器之前):
System.Drawing.Printing.PrinterSettings settings = new System.Drawing.Printing.PrinterSettings();
defaultPrinterName = settings.PrinterName;
打印时,请将您的打印机名称指定为PrinterName
的{{1}}属性:
PrintDocument
处理实际打印的事件:
LocalReport rep = new LocalReport();
//set your data and parameters here
//...
rep.Refresh();
ExportLandscape(rep);
PrintDocument printDoc = new PrintDocument();
PrinterSettings ps = new PrinterSettings();
ps.PrinterName = defaultPrinterName;
printDoc.PrinterSettings = ps;
printDoc.PrintPage += new PrintPageEventHandler(PrintPage);
m_currentPageIndex = 0;
printDoc.Print();
以下是创建打印文档的代码:
//this has to declared somewhere at the "top":
private IList<Stream> m_streams;
private int m_currentPageIndex;
private void PrintPage(object sender, PrintPageEventArgs ev) {
Metafile pageImage = new Metafile(m_streams[m_currentPageIndex]);
// Adjust rectangular area with printer margins.
Rectangle adjustedRect = new Rectangle(
ev.PageBounds.Left - (int)ev.PageSettings.HardMarginX,
ev.PageBounds.Top - (int)ev.PageSettings.HardMarginY,
ev.PageBounds.Width,
ev.PageBounds.Height);
// Draw a white background for the report
ev.Graphics.FillRectangle(Brushes.White, adjustedRect);
// Draw the report content
ev.Graphics.DrawImage(pageImage, adjustedRect);
// Prepare for the next page. Make sure we haven't hit the end.
m_currentPageIndex++;
ev.HasMorePages = (m_currentPageIndex < m_streams.Count);
}
您可以使用类似this的内容将代码转换为vb.net。