我有一个数据的信息,当点击打印按钮时,我想显示打印预览屏幕的样子,然后让用户打印文档。以下是我到目前为止得到的信息:
PrintDocument myDocument = new PrintDocument();
PrintPreviewDialog PrintPreviewDialog1 = new PrintPreviewDialog();
PrintPreviewDialog1.Document = myDocument;
PrintPreviewDialog1.ShowDialog();我的问题是如何将数据放到预览屏幕上。谢谢!
发布于 2015-02-08 08:09:21
您需要添加PrintPage事件:
myDocument.DocumentName = "Test2015";
myDocument.PrintPage += myDocument_PrintPage;你需要对它进行编码!在它最简单的形式中,它会将数据转储出去:
void myDocument_PrintPage(object sender, PrintPageEventArgs e)
{
foreach(DataGridViewRow row in dataGridView1.Rows)
foreach(DataGridViewCell cell in row.Cells)
{
if (Cell.Value != null)
e.Graphics.DrawString(cell.Value.ToString(), Font, Brushes.Black,
new Point(cell.ColumnIndex * 123, cell.RowIndex * 12 ) );
}
}但当然,你会想要添加更多,以获得良好的格式等。
Graphics.MeasureString()方法来找出一个文本块的大小,以优化coodinates,这些文件都是硬编码的,仅用于这里的测试。cell.FormattedValue而不是原始的Value。Fonts,在dgv前面加上一个标头,也许是一个徽标。同样值得考虑的是将Unit设置为独立于mm这样的设备:
e.Graphics.PageUnit = GraphicsUnit.Millimeter;如果需要的话,你应该跟踪垂直位置,这样你就可以添加页码并识别页面何时满了!
更新:,因为您的DGV可能包含空单元格,所以我添加了一个null检查。
https://stackoverflow.com/questions/28368453
复制相似问题